我有一個有2列的DB。SQL查詢爲多個字段選擇行
PostTown | PostCode
我對每PostTown我有成千上萬郵編
的我想要做的是說100獨特PostTown:
select distinct(PostTown), first(PostCode) from PostData
所以我只是想第一郵編爲PostTown,任何幫助深表感謝。
我有一個有2列的DB。SQL查詢爲多個字段選擇行
PostTown | PostCode
我對每PostTown我有成千上萬郵編
的我想要做的是說100獨特PostTown:
select distinct(PostTown), first(PostCode) from PostData
所以我只是想第一郵編爲PostTown,任何幫助深表感謝。
你沒有定義「第一」,但這裏是一個很好的辦法:
select postTown, min(PostCode)
from PostData
group by postTown
而無需場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提供了一個很好的方式,以隨時獲得最低郵編爲好。
如果你真的需要從每個PostTown第一郵編,和你有一個自動遞增的ID列,試試這個:
SELECT
PostTown,
PostCode,
FROM SomeTable sta
WHERE sta.id = (SELECT MIN(id) from SomeTable WHERE PostTown = sta.PostTown)
這是一個奇怪的結構,我不知道它是多麼高效,但是當我爲每件產品處理多個圖像時,它爲我提供了可靠的主要圖像。
哪個RDBMS?而哪首先 - 基於什麼標準? – sgeddes 2013-03-20 01:11:01