Sql 选择包含其他group by列的group的第一行

Sql 选择包含其他group by列的group的第一行,sql,Sql,假设我有一个包含以下结果的表: 我怎么可能选择只需要具有object0\u行为最小结果的不同父\u ID 预期产出: parent_id | id | object0_behaviour | type ------------------------------------------ 1 | 1 | 5 | IP 2 | 3 | 5 | IP 3 | 5 | 7

假设我有一个包含以下结果的表:

我怎么可能选择只需要具有object0\u行为最小结果的不同父\u ID

预期产出:

parent_id | id | object0_behaviour | type
------------------------------------------
1         | 1  | 5                 | IP
2         | 3  | 5                 | IP
3         | 5  | 7                 | ID
4         | 6  | 7                 | ID
5         | 8  | 5                 | IP
6         | 18 | 7                 | ID
7         | 10 | 7                 | ID
8         | 9  | 5                 | IP
我试过:

SELECT parent_id, min(object0_behaviour) FROM table GROUP BY parent_id
它可以工作,但是如果我想要另外两个列,我需要添加到GROUPBY子句中,然后返回到第一步

我看到了R的例子:

类似于我需要的输出,但我似乎无法将其转换为SQL

您可以尝试使用行数窗口函数

select * from table
join (
   SELECT parent_id, min(object0_behaviour) object0_behaviour 
   FROM table GROUP BY parent_id    
) grouped 
on grouped.parent_id = table.parent_id
and grouped.object0_behaviour = table.object0_behaviour
select * from
(
select *, row_number() over(partition by parent_id order by object0_behaviour) as rn
from tablename
)A where rn=1
您可以尝试使用行数窗口功能

select * from
(
select *, row_number() over(partition by parent_id order by object0_behaviour) as rn
from tablename
)A where rn=1

用你正在使用的数据库标记你的问题。用你正在使用的数据库标记你的问题。