2013-06-20 41 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