2013-03-20 35 views
0

我有一個有2列的DB。SQL查詢爲多個字段選擇行

PostTown | PostCode 

我對每PostTown我有成千上萬郵編

的我想要做的是說100獨特PostTown:

select distinct(PostTown), first(PostCode) from PostData 

所以我只是想第一郵編爲PostTown,任何幫助深表感謝。

+0

哪個RDBMS?而哪首先 - 基於什麼標準? – sgeddes 2013-03-20 01:11:01

回答

2

你沒有定義「第一」,但這裏是一個很好的辦法:

select postTown, min(PostCode) 
from PostData 
group by postTown 
1

而無需場ORDER BY,我不知道你能保證得到的第一條記錄。你可以使用ROW_NUMBER嘗試是這樣的:

的SQL Server/Oracle數據庫:

select 
    PostTown, 
    PostCode 
from 
    (
    select 
     PostTown, 
     PostCode, 
     Row_Number() OVER (Partition By PostTown ORDER BY (SELECT 1)) rn 
    from PostData 
    ) t 
where rn = 1 

的MySQL:

select 
    PostTown, 
    PostCode 
from 
    (
    select 
     @rn:=IF(@PrevPostTown=PostTown,@rn+1,1) rn, 
     PostTown, 
     PostCode, 
     @PrevPostTown:=PostTown 
    from PostData 
    order by PostTown 
    ) t 
where rn = 1 

@GordonLinoff提供了一個很好的方式,以隨時獲得最低郵編爲好。

0

如果你真的需要從每個PostTown第一郵編,和你有一個自動遞增的ID列,試試這個:

SELECT 
    PostTown, 
    PostCode, 
FROM SomeTable sta 
WHERE sta.id = (SELECT MIN(id) from SomeTable WHERE PostTown = sta.PostTown) 

這是一個奇怪的結構,我不知道它是多麼高效,但是當我爲每件產品處理多個圖像時,它爲我提供了可靠的主要圖像。