所以我有一张这样的表:
---------
id, keyid
---------
1, 3
1, 5
1, 6
2, 1
2, 1
2, 3
4, 1
I want the output of the query to be
1,3
2,1
4,1
如果我在表中使用select distinct(id,keyid),它会在id,keyid对上应用distinct,而不仅仅是id。
答案 0 :(得分:13)
select id, min(keyid) from tbl group by id
答案 1 :(得分:1)
如果你想要每个Id的KeyId的最小值,那么user194076的答案肯定会有效。
如果您希望每个Id的第一个出现的KeyId值,您可以使用:
WITH CTE AS (
SELECT Id, KeyId, ROW_NUMBER() OVER (PARTITION BY Id ORDER BY Id) AS RN
FROM tbl
)
SELECT Id, KeyId FROM CTE WHERE RN = 1
我使用STATISTICS IO
和STATISTICS TIME
进行了测试,但它们在性能方面似乎相同,所以实际上取决于您的确切需求。