假设我有下表X:
Id Type Name
1 1 Jane
2 2 Mary
3 3 Rose
4 4 Rachel
5 4 Darren
6 4 Jay
要生成的select语句是什么:
Id Type Name
1 1 Jane
2 2 Mary
3 3 Rose
4 4 Rachel
只会选择每种类型的第一行?欣赏很多。
答案 0 :(得分:3)
一种简单的方法是使用相关子查询:
select t.*
from t
where t.id = (select min(t2.id) from t t2 where t2.type = t.type);
以下是DEMO。
答案 1 :(得分:0)
请尝试
SELECT t.* FROM test t
INNER JOIN (SELECT MIN(id) id FROM test GROUP BY TYPE) t2 ON t.id = t2.id;
答案 2 :(得分:0)
如果您的数据库支持,您可以使用row_number()
分析函数。
SELECT Id
,Type
,Name
FROM (
SELECT X.*
,row_number() OVER (
PARTITION BY type ORDER BY Id
) rn
FROM X
) a
WHERE rn = 1;