0

可能重复:
MySQL 检索组的最新记录

我有一个查询,它将所有在“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 的一些变体,但这似乎并没有奏效。

任何帮助将不胜感激。

4

1 回答 1

1

你想要分组最大值

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表达式结果的列(然后对其进行索引)。

于 2012-10-30T22:55:07.353 回答