2013-06-20 22 views
1

我有在上市记录怀疑从一个表,我用:加入,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

你有正确的想法,但要使用相关子查询:

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的最大值的行。

+0

没错,我不知道我可以在子查询中引用,谢谢;) – Marcaum54