奇怪的措辞“Not
无效!”我知道,但奇怪的是,在user_id
确实存在的情况下会返回足够的结果,尽管查询会指示NOT (user_id = 1)
。
SELECT post_id, last_update
FROM the_table
WHERE last_update
BETWEEN NOW( ) - INTERVAL 7 DAY
AND NOW( ) AND NOT (user_id =1)
GROUP BY post_id
ORDER BY last_update DESC
简单地说,我们正在尝试检索用户尚未投票的最新结果 - 但结果正在转向用户确实投票的地方,尽管NOT (user_id = 1)
。
这怎么可能?查询的一部分是否超越另一部分?也许是分组?
奇怪的是,事情就像在Localhost上预测的那样,但在服务器上却没有!它似乎在sql-continuum中有一个撕裂,现实根据环境而变化。 (是的,服务器和本地主机上的user_id都是1)
答案 0 :(得分:2)
SELECT x.*
FROM the_table x
JOIN
( SELECT post_id
, user_id
, MAX(last_update) max_last_update
FROM the_table
WHERE last_update BETWEEN NOW( ) - INTERVAL 7 DAY AND NOW( )
AND user_id <> 1
GROUP
BY post_id
, user_id
) y
ON y.post_id = x.post_id
AND y.user_id = x.user_id
AND y.max_last_update = x.last_update
ORDER
BY x.last_update DESC;