简单 MySQL 重复删除

Simple MySQL Duplicate Removal

我正试图从我的数据库中获取行。但是,由于某种原因,即使在 IDPosts 部分有 DISTINCT 命令,一些行 return 仍然是重复的。问题是用于检查 post 过期日期的 AND/OR 语句。任何想法将不胜感激,以将其减少到零重复。如果您需要更多信息,请告诉我。

SELECT 
      DISTINCT IDPosts, 
      profile_picture,
      body, 
      post_date, 
      expires, 
      filename, 
      username 
FROM Posts, Users 
WHERE Posts.IDUser = Users.IDUser AND expires IS NULL OR expires >= NOW() 
ORDER BY `Posts`.`post_date` DESC

我不知道这是否与您的问题有关,但您应该在 where 子句中的 expires 条件周围加上括号。逻辑可能不符合您的意图。

SELECT DISTINCT IDPosts, profile_picture, body, post_date, expires,
      filename, username
FROM Posts JOIN
     Users 
     ON Posts.IDUser = Users.IDUser
WHERE 
      (expires IS NULL OR expires >= NOW() )
ORDER BY `Posts`.`post_date` DESC;

现在我还修复了连接语法以使用正确的显式连接。