PostgreSQLでこのクエリを実行して、customer
テーブルにあり、_customer
テーブルに存在しない状態を確認しています。この場合、クアラルンプールは紛失していることがわかります(技術的には国家ではありません)。しかし、クエリは何も返さない。サブクエリーでNOTが正しい結果を返していません
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で「請求先住所の状態」をnullにすることはできますか?少なくとも1つの要素がnullのとき、 'NOT IN'は何も返しません。 –
はい!それは問題だった – lfk
途中で 'IN'または' NOT IN'で 'DISTINCT'を使わないでください。興味のあるデータ(ここでは他のテーブルにない顧客)をDBMSに伝え、それを達成する方法ではありません。それをDBMSに任せてください。 DISTINCT操作を実行するか否かを最適に実行するかどうかを決定します。 –