[SQL] SQL 쿼리에서 역 중복 제거
SQLSQL 쿼리에서 역 중복 제거
하자 쿼리 결과가 문자열 쌍 (x, y)의 목록을 반환하도록되어 있다고 말한다. 나는 반대 중복을 제거하려합니다. (X, Y)이 나중에 표시되지 않아야 결과 중 하나, (Y, X) 인 경우 내 말은있다.
예:
column 1 (foreign key) column 2 (int) column 3 (string)
4 50 Bob
2 70 Steve
3 50 Joe
이 표에 표시된 사람들은 다른 열이 값으로 여러 번 나타날 수 있습니다.
내 쿼리는 동일한 열이 값이 이름의 모든 쌍을 인쇄 할 필요가있다 :
select e.column3, f.column3 from example as e, example as f where e.column2 = f.column2
(Bob, Bob)
(Bob, Joe)
(Joe, Bob)
(Joe, Joe)
이 복식을 제거하도록 I 쿼리를 업그레이드 :
select e.column3, f.column3 from example as e, example as f where e.column2 = f.column2
and e.column3 <> f.column3
(Bob, Joe)
(Joe, Bob)
지금은 단지 수익을 원하는 :
(Bob, Joe).
나는 결과에 그것을 원하지 않아요 그래서 (조, 밥), 역 중복입니다. 한 쿼리에서 그것을 처리하기 위해 어쨌든 있나요?
해결법
-
==============================
1.우선, 2012 년에 우리는 쉼표를 사용하여 관련 테이블에서 떨어져 마이그레이션 한 환영합니다. 그것은 ANSI 89 introdued했지만 심각하게 부족하다. Nowaways, 올바른 방법은 ANSI 92/99/2003 JOIN 구문을 사용하여 쓰기 쿼리입니다.
우선, 2012 년에 우리는 쉼표를 사용하여 관련 테이블에서 떨어져 마이그레이션 한 환영합니다. 그것은 ANSI 89 introdued했지만 심각하게 부족하다. Nowaways, 올바른 방법은 ANSI 92/99/2003 JOIN 구문을 사용하여 쓰기 쿼리입니다.
문제에 대한 해결책은 당신이 선호하는 중 중, 단방향 불평등으로 양방향 불평등을 <> 설정하는 것입니다 <또는>.
select e.column3, f.column3 from example as e join example as f on e.column2 = f.column2 and e.column3 < f.column3
-
==============================
2.
select e.column3, f.column3 from example as e, example as f where e.column2 = f.column2 and e.column3 <> f.column3 where e.id < f.id
절은 그것을해야 간단한 추가.
from https://stackoverflow.com/questions/13041802/remove-reverse-duplicates-from-an-sql-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 분할 쉼표는 MySQL을 저장 프로 시저의 텍스트를 분리 (0) | 2020.07.01 |
---|---|
[SQL] 중복이 SQL과 테이블에 위에 각 그룹에서 3 값을 선택하는 방법 [중복] (0) | 2020.07.01 |
[SQL] SQL 서버 : 어떻게 저장 프로 시저의 매개 변수로 데이터베이스 이름을 얻을 수 있습니다 (0) | 2020.07.01 |
[SQL] 다른 열 그룹화 다른 칼럼의 최대 값에 기초 얻기 [중복] (0) | 2020.07.01 |
[SQL] 어떻게 SQL Server의 공휴일을 결정합니까? (0) | 2020.07.01 |