我正在使用联合(对或错)在一些表上做一些基本的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
Answers:
Union
将删除重复项。Union All
才不是。
UNION
除非指定,否则使用自动删除重复的行UNION ALL
:http :
//msdn.microsoft.com/zh-cn/library/ms180026(SQL.90).aspx
如果您使用的是T-SQL,则UNION会从以前的帖子中删除重复项。但是,如果不是,则可以使用与众不同。这对我来说也不太合适,但可以为您提供所需的结果
SELECT DISTINCT *
FROM
(
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
)a
由于您仍然会重复使用,因此UNION
我将检查以下内容:
他们是确切的重复。我的意思是,如果您
SELECT DISTINCT * FROM (<your query>) AS subquery
您得到的文件较少吗?
您在查询的第一部分中还没有重复项(可能是由左联接生成的)。据我了解,UNION
它不会添加到结果集中已经存在的行中,但是它不会删除第一个数据集中已经存在的重复项。