我有一个查询对“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的一些变体,但这似乎没有诀窍。
非常感谢任何帮助。
答案 0 :(得分: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
表达式结果的列(然后将其索引)。