MySQL选择组中的最新记录

时间:2012-10-30 22:40:20

标签: mysql sql-order-by

  

可能重复:
  MySQL retrieve latest record for Group

我有一个查询对“address1”字段中具有相同信息的所有记录进行分组,除非它们具有不同的jobType。

SELECT * 
FROM   jobs 
WHERE  client_id = '".$id."' 
       AND status = '3' 
GROUP  BY CASE 
            WHEN jobType IN ( '0', '3', '6' ) THEN '0' 
            ELSE jobType 
          end, 
          address1 
ORDER  BY Max(id) ASC 

我遇到的问题是,查询总是拉取组中的第一个实例。我需要它来拉取组中的最新实例。我尝试过ORDER BY的一些变体,但这似乎没有诀窍。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你想要groupwise maximum

SELECT jobs.*
FROM   jobs NATURAL JOIN (
  SELECT   MAX(id) id
  FROM     jobs
  WHERE    client_id = :id AND status = '3'
  GROUP BY CASE
             WHEN jobType IN ('0','3','6') THEN '0'
             ELSE jobType
           END,
           address1
) t

然而,这不会非常友好。最好创建一个包含CASE表达式结果的列(然后将其索引)。