2014-02-14 119 views
-4

這是我的查詢響應。錯誤GROUP BY在sql中

id_project filename 
25   daf5c857-b4f3-4977-b2b7-fe61903cbc1f_3.jpg   
26   4452ff57-966b-49ec-9b90-ea8a78a7dad0_1.jpg   
26   4668ba37-8fea-48c8-955b-c6d71a8973dc_2.jpg   
26   9ee0f078-16db-4e4a-895b-54ab307b1fa6_3.jpg   

我想顯示一個26字段。我用這個選擇代碼:

SELECT id_project, filename 
FROM image 
GROUP BY id_project 

,但顯示這個錯誤

消息8120,級別16,狀態1,行2
列 'image.filename' 是在選擇列表中,因爲它無效不包含在聚合函數或GROUP BY子句中。

我使用此代碼來解決,但它顯示與原始查詢相同的結果集。

select distinct id_project, filename 
from image 
+1

什麼是與SQL你的最終目標是什麼? – Shiva

+2

你的錯誤令人難以置信的直截了當。 – Zane

+0

我使用sqlserver 2005 – user3272231

回答

2

只顯示我們每id_projectfilename你需要用它在聚合匹配的一個一行。

你說「沒關係,只顯示26之一」。這將按字母順序返回最新的一個。

SELECT id_project, 
     MAX(filename) AS filename 
FROM image 
GROUP BY id_project 

或者你可以重寫得到ANY aggregate

WITH T 
    AS (SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY id_project 
             ORDER BY id_project) AS RN 
     FROM image) 
SELECT id_project, 
     filename 
FROM T 
WHERE RN = 1