Possible Duplicate:
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 的一些变体,但这似乎并没有起到作用。
任何帮助将不胜感激。
最佳答案
您想要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
表达式结果的列(然后为其建立索引)。
关于MySQL选择组中的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148633/