2010-11-08 14 views
41

robię niektóre podstawowe sql na kilku stołach mam, używając Union (słusznie lub niesłusznie)usunąć duplikaty z SQL unii

ale muszę usunąć duplikaty. Jakieś pomysły?

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 
+1

Czy twierdzisz, że twoje zapytanie nie usuwa duplikatów? – Yada

Odpowiedz

110

Union spowoduje usunięcie duplikatów. Union All nie.

+2

to prawda, przynajmniej dla MS SQL. – TarasB

+2

Interesujące ... nie usuwa duplikatów z powyższego oświadczenia – thegunner

+2

@thegunner - Czy zdarza się, że typ danych Timestamp jest jedną z kolumn? –

4

Inni już odpowiedział na bezpośrednie pytanie, ale chyba można uprościć kwerendy, aby wyeliminować pytanie (albo mieć coś mi umknęło, a kwerenda jak poniżej będzie naprawdę wytworzenia zasadniczo różne wyniki):

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 
1

Jeśli używasz T-SQL, a następnie pojawia się ona od poprzednich postów, że UNION usuwa duplikaty. Ale jeśli nie, możesz użyć odrębnego. To nie do końca czuję się dobrze do mnie też, ale może Ci wynik szukasz

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 
0

Ponieważ wciąż coraz duplikat używając tylko UNION Chciałbym sprawdzić, że:

  • Że są dokładnymi duplikatami. To znaczy, jeśli wykorzysta

    SELECT DISTINCT * FROM (<your query>) AS subquery

    dostaniesz mniej pliki?

  • To, że nie masz już duplikatów w pierwszej części zapytania (może wygenerowany przez lewe dołączenie). Jak rozumiem, UNION nie doda do zestawów wyników, które już na nim są, ale nie usunie duplikatów już obecnych w pierwszym zbiorze danych.

+1

Przynajmniej T-SQL usuwa wszystkie duplikaty, nawet jeśli pochodzą z tego samego zestawu danych. – Carlos

Powiązane problemy