SQL Union에서 중복 제거
나는 유니온을 사용하여 내가 가지고있는 몇 가지 테이블에서 기본 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
Union
중복을 제거합니다. Union All
하지 않습니다.
사용은 UNION
사용자가 지정하지 않는 한 자동으로 중복 행을 제거 UNION ALL
: http://msdn.microsoft.com/en-us/library/ms180026(SQL.90).aspx
다른 사람들은 이미 직접적인 질문에 대답했지만 질문을 제거하기 위해 쿼리를 단순화 할 수 있습니다 (또는 내가 뭔가를 놓친 적이 있고 다음과 같은 쿼리가 실제로 다른 결과를 생성합니까?).
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
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
이미있는 결과 집합 행에 추가되지는 않지만 첫 번째 데이터 집합에 이미있는 중복 항목은 제거되지 않습니다.
T-SQL을 사용하는 경우 저장 프로 시저에서 임시 테이블을 사용하고 그에 따라 쿼리 레코드를 업데이트하거나 삽입 할 수 있습니다.
참조 URL : https://stackoverflow.com/questions/4127714/remove-duplicates-from-sql-union
'program story' 카테고리의 다른 글
Chart.js — 임의의 수직선 그리기 (0) | 2021.01.06 |
---|---|
Django FileField : 파일 이름 만 반환하는 방법 (템플릿에서) (0) | 2021.01.05 |
iOS 자산 번들을 만드는 방법은 무엇입니까? (0) | 2021.01.05 |
보기를 뒤로 보내는 방법은 무엇입니까? (0) | 2021.01.05 |
CMTime 초 출력 (0) | 2021.01.05 |