我需要编写一个返回单个行或每组记录的查询.例如,我有一个带有列的表'employee':
id, name, type
1, John, full-time
2, Mike, full-time
3, Alex, part-time
4, Jerry, part-time
Run Code Online (Sandbox Code Playgroud)
我需要回复一些类似的东西
1, John, full-time
4, Alex, part-time
Run Code Online (Sandbox Code Playgroud)
谢谢
您将要使用GROUP BY应用聚合函数:
select min(id) id,
min(name) name,
type
from yourtable
group by type;
Run Code Online (Sandbox Code Playgroud)
如果您不关心每种类型返回的id/name,则上述方法有效.如果你这样做,你可以使用:
select t1.id,
t1.name,
t1.type
from yourtable t1
inner join
(
select min(id) id, type
from yourtable
group by type
) t2
on t1.id = t2.id
and t1.type = t2.type
Run Code Online (Sandbox Code Playgroud)
要么
select t1.id,
t1.name,
t1.type
from yourtable t1
inner join
(
select min(name) name, type
from yourtable
group by type
) t2
on t1.name = t2.name
and t1.type = t2.type;
Run Code Online (Sandbox Code Playgroud)
见演示