从sql union中删除重复项

the*_*ner 56 sql t-sql

我在一些桌子上做一些基本的sql,使用一个联合(正确或错误)

但我需要删除重复项.有任何想法吗?

select * from calls
left join users a on calls.assigned_to= a.user_id
where a.dept = 4 
union
select * from calls
left join users r on calls.requestor_id= r.user_id
where r.dept = 4
Run Code Online (Sandbox Code Playgroud)

Ran*_*der 156

Union将删除重复.Union All才不是.

  • @thegunner - Union实际上删除了重复项.我会从两个查询中删除selct*并一次手动添加一个列,直到找到您认为发生重复的情况.当你找到一个时,数据类型是什么? (3认同)
  • 实际上 - 再看一下,我没有添加一些列;期望使行唯一。我会再看看查询 - 谢谢。 (3认同)
  • 这是事实,至少对于MS SQL而言如此. (2认同)
  • 有趣......不会删除上述声明中的重复项 (2认同)
  • @thegunner - 你碰巧有一个Timestamp数据类型作为你的一个列吗? (2认同)

Jer*_*urn 5

使用时会UNION自动删除重复的行,除非您指定UNION ALL:http: //msdn.microsoft.com/en-us/library/ms180026(SQL.90).aspx

  • 这是否包括“联合”查询之一返回的重复行? (5认同)