Ich mache einige grundlegende SQL-Anweisungen für einige Tabellen, die ich habe, unter Verwendung einer Union (zu Recht oder zu Unrecht).
aber ich muss die Duplikate entfernen. Irgendwelche Ideen?
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
Antworten:
Union
entfernt Duplikate.Union All
nicht.quelle
Durch die
UNION
automatische Verwendung werden doppelte Zeilen automatisch entfernt, sofern Sie nicht Folgendes angebenUNION ALL
: http://msdn.microsoft.com/en-us/library/ms180026(SQL.90).aspxquelle
Andere haben Ihre direkte Frage bereits beantwortet, aber vielleicht könnten Sie die Abfrage vereinfachen, um die Frage zu beseitigen (oder habe ich etwas verpasst, und eine Abfrage wie die folgende führt wirklich zu erheblich anderen Ergebnissen?):
select * from calls c join users u on c.assigned_to = u.user_id or c.requestor_id = u.user_id where u.dept = 4
quelle
Wenn Sie T-SQL verwenden, scheint es, dass UNION aus früheren Beiträgen Duplikate entfernt. Aber wenn Sie nicht sind, könnten Sie verschiedene verwenden. Das fühlt sich für mich auch nicht ganz richtig an, aber es könnte Ihnen das Ergebnis bringen, das Sie suchen
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
quelle
Da Sie immer noch nur mit Duplikaten arbeiten,
UNION
würde ich Folgendes überprüfen:Dass es sich um exakte Duplikate handelt. Ich meine, wenn du eine machst
SELECT DISTINCT * FROM (<your query>) AS subquery
Sie bekommen weniger Dateien?
Dass Sie nicht bereits die Duplikate im ersten Teil der Abfrage haben (möglicherweise durch den linken Join generiert). Soweit ich weiß
UNION
, werden die bereits vorhandenen Zeilen der Ergebnismenge nicht hinzugefügt, es werden jedoch keine Duplikate entfernt, die bereits im ersten Datensatz vorhanden sind.quelle
Wenn Sie T-SQL verwenden, können Sie eine temporäre Tabelle in einer gespeicherten Prozedur verwenden und die Datensätze Ihrer Abfrage entsprechend aktualisieren oder einfügen.
quelle