programing

오라클에서 MINUS 연산자

easyjava 2023. 9. 16. 10:07
반응형

오라클에서 MINUS 연산자

MINUS 연산자

저는 테이블 A와 B가 두 개 있습니다.

SELECT COUNT(*) FROM (SELECT * FROM tableA)

반품 389

SELECT COUNT(*) FROM (SELECT * FROM tableB)

반품 217

SELECT COUNT(*) FROM
(SELECT * FROM tableA
INTERSECT
SELECT * FROM tableB)

반환 0

SELECT COUNT(*) FROM 
(SELECT * FROM tableA
MINUS
SELECT * FROM tableB)

반품 389

SELECT COUNT(*) FROM 
(SELECT * FROM tableB
MINUS
SELECT * FROM tableA)

89로 돌아감

누가 마지막 쿼리가 217이 아니라 89를 반환하는 이유를 설명해 줄 수 있습니까?

MINUS는 첫 번째 결과 집합을 수행하고 두 번째 결과 집합에 존재하는 모든 것을 제거합니다. 또한 중복도 제거합니다.

예제에서 표 A에는 389개의 행이 있고, 표 B에는 217개의 행이 있습니다. INSTRESS는 공통으로 행이 없음을 보여주며, 이는 표 A에서 표 B를 뺀 값이 389개의 행(즉, 모든 행)임을 의미합니다.

표 B MINUS 표 A는 표 B에 있는 행들의 구별된 집합을 반환하므로 표 B에는 89개의 구별된 값이 있습니다.

A와 B, A = {1,2,3,4}, 카운트(A) = 4, B = {5,6,6,7,7}, 카운트(B) = 5를 설정했다고 가정합니다.

따라서 A-B = {1,2,3,4}이므로 (A-B) = 카운트(A) = 4

그러나 B-A = {5,6,7}, 카운트(B) = 3

따라서 여기서 우리가 이해하는 것은 마이너스가 중복되는 항(또는 행)을 없앤다는 것입니다.이것이 행수가 217개에서 89개로 줄어든 이유입니다.

도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/20209265/minus-operator-in-oracle

반응형