PostgreSQL에서이 쿼리를 실행하여 customer
테이블에 있지만 상태는 _customer
테이블에 없습니다. 나는이 경우 쿠알라 룸푸르가 실종되었다는 것을 안다. (기술적으로는 국가가 아니다.) 그러나 쿼리는 아무 것도 반환하지 않습니다.하위 쿼리가 올바른 결과를 반환하지 않음
SELECT DISTINCT ("Billing Address State")
FROM customer
WHERE "Billing Address State" NOT IN (
SELECT DISTINCT("Billing Address State")
FROM _customer
);
다른 쿼리 : 원래 쿼리의
SELECT DISTINCT ("Billing Address State")
FROM customer
NT
South Australia
Kuala Lumpur
Hertfordshire
NSW
Bangkok
West Java
Queensland
New South Wales
Western Australia
Stockholm
Victoria
WA
QLD
Gauteng
Australian Capital Territory
SA
Other
TAS
Northern Territory
VIC
Rhondda Cynon Taf
Tasmania
ACT
Îles du Vent
North Lanarkshire
Norfolk
Dublin
그리고
SELECT DISTINCT("Billing Address State")
FROM _customer;
NT
South Australia
Hertfordshire
NSW
Bangkok
West Java
Queensland
New South Wales
Western Australia
Stockholm
Victoria
ACT
Îles du Vent
WA
North Lanarkshire
Norfolk
Dublin
QLD
Gauteng
Australian Capital Territory
SA
Other
TAS
Northern Territory
VIC
Rhondda Cynon Taf
Tasmania
보완 : 쿠알라 룸푸르 제외
SELECT DISTINCT ("Billing Address State")
FROM customer
WHERE "Billing Address State" IN (
SELECT DISTINCT("Billing Address State")
FROM _customer
);
반환 다. 다른 말로하면, 쿠알라 룸푸르는 _customer
에 있으며 동시에 존재하지 않습니다.
_Customer에서 "Billing Address State"가 null 일 수 있습니까? 그것은 적어도 하나의 요소가 null 일 때 'NOT IN'이 아무 것도 반환하지 않기 때문에 설명 할 것입니다. –
예! 그게 문제였습니다 – lfk
중간에 'IN'또는 'NOT IN'과 함께'DISTINCT '를 사용하지 마십시오. DBMS에게 당신이 관심있는 데이터 (여기에있는 다른 테이블에없는 고객)를 알려주고 그것을 달성하는 방법을 알려주지 않아야합니다. DBMS에 그대로 두십시오. DISTINCT 연산을 수행할지 여부를 최적으로 결정합니다. –