Mysql不能使用GROUP BY在这个查询中工作 - 为什么?

时间:2014-06-13 08:01:48

标签: php mysql sql

奇怪的措辞“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)

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;