不要在SQL上获得重复的记录

时间:2016-03-25 20:48:29

标签: sql greatest-n-per-group

从选择查询中得到的结果如下:

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

4 个答案:

答案 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