我有一个像这样设置的表:
ID int
Hash varchar
OtherID int
一些示例数据:
1 3pm6Qav1Vd 23
2 3pm6Qav1Vd 2
3 3pm6Qav1Vd 19
4 3pm6Qav1Vd 17
5 RSUBe2VBtl 2
6 3pm6Qav1Vd 4
7 3pm6Qav1Vd 21
8 RSUBe2VBtl 23
9 RSUBe2VBtl 19
我希望能够只提取每个哈希集的第一行:
1 3pm6Qav1Vd 23
5 RSUBe2VBtl 2
每行都是每个哈希的最低ID。我在SQL Server 2005上使用T-SQL。我不确定从哪一个开始。
答案 0 :(得分:7)
SELECT t.ID, t.Hash, t.OtherID
FROM (SELECT ID, Hash, OtherID, ROW_NUMBER() OVER(PARTITION BY Hash ORDER BY ID) AS RowNum
FROM YourTable) t
WHERE t.RowNum = 1
答案 1 :(得分:3)
简单!
SELECT *
FROM [tableName]
WHERE ID IN (
SELECT MIN(ID)
FROM [tableName]
GROUP BY Hash
)
希望这有帮助。
答案 2 :(得分:3)
select ID, Hash, OtherId
from (
select ID, Hash, OtherId, row_number() over (partition by Hash order by ID) as RN
from yourtable
) a
where RN = 1
答案 3 :(得分:1)
执行以下操作
SELECT * FROM Table T1
INNER JOIN (
SELECT MIN(ID) ID FROM Table GROUP BY Hash) T2
ON T1. ID = T2.ID
希望这会有所帮助!!