我试图从我的数据库中获取行。但是,由于某种原因,即使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
答案 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;
现在我还修复了连接语法以使用正确的显式连接。