从选择查询中得到的结果如下:
IdCompany | IdUser | ComapnyName | JobTitle
1 100 Company1 Developer
2 100 Company2 Developer
3 200 Company3 Developer
4 200 Company4 Developer
5 200 Company5 Developer
6 300 Company6 Developer
我想要的是获取相同的字段但不是重复的IdUser,因为每个IdUser只能获得一条记录。我试过DISTINCT和EXISTS,但无法找到解决方案。 这是我想要结果的方式:
IdCompany | IdUser | ComapnyName | JobTitle
1 100 Company1 Developer
5 200 Company5 Developer
6 300 Company6 Developer
答案 0 :(得分:1)
如果IdCompany是PK或至少是不同的
,这应该可以完成select * from table
where IdComapny in
(select min(IdCompany) from table
group by IdUser)
答案 1 :(得分:1)
执行此操作的典型方法是使用ANSI标准窗口函数row_number()
:
select t.*
from (select t.*, row_number() over (partition by idUser order by idUser) as seqnum
from t
) t
where seqnum = 1;
答案 2 :(得分:0)
你可以试试这个:
select * from TABLE group by ´IdCompany´
答案 3 :(得分:0)
我认为您的要求可能有误。但是此查询非常接近您的结果。请将您的表放在以下查询
中select * from
(
select rn = ROW_NUMBER() over (partition by IdUser order by IdUser) ,
*
from YourTable
) B
where rn = 1