2 개의 테이블이 있으며 같은 행을 반입하지 않습니다. 검색어 작성 방법SQL 쿼리에서 같지 않은 행을 얻는 방법
예를 들어 table a
은 10 개의 행을 포함하고 table b
은 10 개의 행을 포함합니다. a와 b의 평등 행은 내가
어떻게 나 테이블도 동일하지 않은 테이블 값을 가져 (안 B 테이블)이 동일하지 않은 행을 먹고 싶어 5.
입니까?
결과
구가 교차 유사하지만 5 레코드
2 개의 테이블이 있으며 같은 행을 반입하지 않습니다. 검색어 작성 방법SQL 쿼리에서 같지 않은 행을 얻는 방법
예를 들어 table a
은 10 개의 행을 포함하고 table b
은 10 개의 행을 포함합니다. a와 b의 평등 행은 내가
어떻게 나 테이블도 동일하지 않은 테이블 값을 가져 (안 B 테이블)이 동일하지 않은 행을 먹고 싶어 5.
입니까?
결과
구가 교차 유사하지만 5 레코드
는 B의 행을 가지고 있지만하려면
select * from A minus select * from B
는 모두 A의 행과 B 아니지만을 촬영하려면 :
(select * from A union select * from B) minus (select * from A intersect select * from B)
빼기가 정답을 제시하지 않습니다. 그 두 테이블에 동등하지 않은 값을줍니다. 테이블 값만 원한다. – user2587029
이 문제는 오래 전에 해결되었습니다. 최적의 솔루션은 각 테이블을 한 번만 읽습니다 (각 테이블을 두 번 읽고 몇 가지 추가 작업을 수행하는 "대칭 차이"솔루션과 달리).
select 'A' as source, col1, col2, ...
from table_A
union all
select 'B' as source, col1, col2, ...
from table_B
group by col1, col2, ...
having count(*) = 1
;
행이 두 테이블에있는 경우
, 그 수는이 중 하나를 테이블에 중복 행이없는 가정 2.될 것입니다; 행이 중복 될 수있는 경우 HAVING 조건을 수정할 수 있습니다. 예 :
having count(case when source = 'A' then 1 end) = 0
or count(case when source = 'B' then 1 end) = 0
빼기는 정답입니다. 그 두 테이블에 동등하지 않은 값을줍니다. 난 단지 테이블 값을 원합니다 – user2587029