1

我对我使用的表中的列表记录有疑问: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
4

1 回答 1

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)

按 c.cliche_pk 分组

这将获得对应于每个最大值的行cliche_pk

于 2013-06-20T16:58:18.930 回答