简单的MySQL重复删除

时间:2015-02-16 04:17:20

标签: mysql sql select primary-key distinct

我试图从我的数据库中获取行。但是,由于某种原因,即使IDPosts部分有DISTINCT命令,某些行仍会返回重复项。问题是用于检查过期日期的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

1 个答案:

答案 0 :(得分:2)

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

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;

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