2013-03-22 15 views
0

我有以下查詢......簡單的不同列,不能讓我的頭周圍

SELECT DISTINCT TITLE, ID, IMAGE_1, IMAGE_1_DESCRIPTION 
FROM PHOTO_GALLERY 
ORDER BY ID ASC 

當然,這帶來了所有的條目,但我想它過濾掉任何有相同的TITLE字段,只選擇最低的ID

我見過有幾個問題與此查詢類似,但我似乎無法通過研究他們的問題來解決問題的答案。

在此先感謝!

回答

0

你需要一個group by,而不是一個distinct。爲了獲得最低ID:

SELECT TITLE, min(ID) as minid 
FROM PHOTO_GALLERY 
group by title 
ORDER BY minID ASC 

要獲取的信息的其餘部分,你需要加入表背在這裏是明確加入版本:

SELECT pg.TITLE, pg.ID, pg.IMAGE_1, pg.IMAGE_1_DESCRIPTION 
FROM PHOTO_GALLERY pg join 
    (SELECT TITLE, min(ID) as minid 
     FROM PHOTO_GALLERY 
     group by title 
    ) pgt 
    on pg.title = pgt.title and pg.id = pgt.minid 
ORDER BY ID ASC 
+0

哇!這是偉大的人!對此,我真的非常感激。這聽起來很簡單,但我還沒有把我的頭靠得像以前那樣複雜。謝謝你們的幫助! – 2013-03-23 00:00:39

0

select在「from」位執行表的笛卡爾乘積。 「哪裏」敲掉那些不符合條款的人。 「排序」排序其餘的。進入混合區是不同的 - 你得到的第一行與下一行不相同。

等稱號,並使用極限添加where子句

0

鮮明返回唯一行指定一組列。也許你應該嘗試使用這個作爲子查詢:

select min(id), title from photo_gallery group by title 
相關問題