從特定重覆欄位取一值

過濾重複值得SQL語法為Distinct,但必須為全部欄位都相符才會過濾出,要是遇到如下圖有一欄位值不同則會全部的資料都過顯示出來,因此必須採用別種方法將資料過濾出來,主要我要將Class欄位內重複值且Show值為 Y 的值過濾出來
方法一
select * 
from koc_class a
left join
(
 select Title, pictureFile, Class 
 from koc 
 where SN in (select max(SN) from koc where Show = 'y' group by Class)
)b
on a.Class = b.Class order by a.SN desc

方法二
select *
from koc_class a
left join
(
 select Title, pictureFile, Class 
 from koc where show = 'y' 
 group by Title, pictureFile, Class
)b
on a.Class = b.Class order by a.SN desc

上面兩種寫法都可以求出相同的結果,下圖就是過濾出來和另外資料表合併後的結果

留言