從重複的資料中取其中一筆

  • 63142
  • 0
  • SQL
  • 2011-01-13

摘要:從重複的資料中取其中一筆

今天有個朋友問了一個SQL語法的問題,
大致上他是希望從下面的資料表中過濾料[書名]重複的欄位,
但是因為[編號]與[書籍編號]都是不同的,
所以如果直接下distinct的話,[書名]還是會出現重複的,

table1
編號 書籍編號 書名
5 94010003-1 費曼手札
6 94010003-2 費曼手札
7 94010004-1 這一生 你為何而來
8 94010004-2 這一生 你為何而來
9 94010005-1 歡樂學習理所當然
10 94010005-2 歡樂學習理所當然
11 94010005-3 歡樂學習理所當然
12 94010006-1 給年輕學子的52封信
13 94010006-2 給年輕學子的52封信
14 94010006-3 給年輕學子的52封信

 

這問題,之前也遇過,只是一時要用就忘了應該怎麼下,
所以現在就在這紀錄一下!

大致上可以用以下的語法達成...
主要是將對要過濾重複的書名下group by,
然後挑出裡面編號最小的,當然如果要挑最大的也是可以,
然後在用所挑出來的編號去查詢資料就可以了!
ps.完全沒用到distinct,所以一開始想說要用distinct只會誤導自己...

select * from table1
where 編號 in (SELECT MIN(編號) AS expr1
FROM table1
GROUP BY 書名)