我在列表中对我使用的表格有疑问:JOIN,MAX,GROUP BY
我使用以下查询:
SELECT cr.*
FROM cliche c
INNER JOIN cliche_revisao cr ON c.cliche_pk = cr.cliche_pk
WHERE cr.numero = (SELECT MAX(number) FROM cliche_revisao WHERE cliche_pk = 3)
GROUP BY c.cliche_pk
问题是,所有元素的列表都不必传递子查询中的文字值。
我尝试了这个查询但是没有用
SELECT cr.*, @cliche:= c.cliche_pk
FROM cliche c
INNER JOIN cliche_revisao cr ON c.cliche_pk = cr.cliche_pk
WHERE cr.numero = (SELECT MAX(numero) FROM cliche_revisao WHERE cliche_pk = @cliche)
GROUP BY c.cliche_pk
答案 0 :(得分:1)
你有正确的想法,但是你想使用相关的子查询:
SELECT cr.*
FROM cliche c
INNER JOIN cliche_revisao cr ON c.cliche_pk = cr.cliche_pk
WHERE cr.numero = (SELECT MAX(number)
FROM cliche_revisao cr2
WHERE cr2.cliche_pk = cr.cliche_pk)
GROUP BY c.cliche_pk
这将获得与每个cliche_pk
的最大值对应的行。