2010-02-22 85 views
0

我有6列的表格:idabcde。主要關鍵是id火鳥組

我想檢索不同的a,b,c,max(d)對於該組,並且e與max(d)在同一行中存在(列「id」與我的查詢無關)。

我嘗試此查詢:

SELECT a, b, c, MAX(d), e 
FROM tablename 
GROUP BY a, b, c; 

,但它給了我「在選擇列表中(不包含在聚合函數或GROUP BY子句)無效的表達。」如果我添加一個額外的GROUP BY e,它只是給我不同的a,b,c,e,每個MAX(d),這不是我所需要的。我明白爲什麼發生這種情況,我不明白的是如何使它做我需要的...

是子查詢的路要走嗎?你能爲我寫一篇嗎?

最令人沮喪的是,我的查詢將在MySQL工作:(

回答

1
SELECT t1.a,t1.b,t1.c,t1.d,t1.e 
FROM tablename AS t1 
INNER JOIN (SELECT a, b, c, MAX(d) d 
      FROM tablename 
      GROUP BY a, b, c 
      ) AS t2 
ON t1.a = t2.a 
AND t1.b = t2.b 
AND t1.c = t2.c 
AND t1.d = t2.d 

注意,如果多行並列MAX(d),該查詢將返回所有的a,b,c行與d值。

我不知道MySQL在這種情況下如何處理重複的行