我有這個疑問:不同的結果在SQL
SELECT
customerName, country
FROM
customers
WHERE
customernumber
NOT IN
(SELECT
customernumber
FROM
payments
WHERE
amount < 40000)
AND
customernumber
IN
(SELECT
customernumber
FROM
payments
GROUP BY
customernumber
HAVING
COUNT(amount) >=2)
我有一些結果,但是當我改變not in
到in
和<
到>=
我收到完全不同的結果:
SELECT
customerName, country
FROM
customers
WHERE
customernumber
IN
(SELECT
customernumber
FROM
payments
WHERE
amount >= 40000)
AND
customernumber
IN
(SELECT
customernumber
FROM
payments
GROUP BY
customernumber
HAVING
COUNT(amount) >=2)
我完全糊塗了這一點。在這裏你可以看到模式:http://www.learntosql.com/retailer-database/。
查詢1 - 找到至少有兩筆付款的客戶,其中沒有一筆金額低於40000.查詢2 - 查找至少有兩筆付款的客戶,其中一筆付款超過(或相等)40000。仔細查看這些說明。查詢是真實不同的。 –
第一個選擇所有從未支付少於40000的顧客,第二個支付至少一次支付超過40000的所有顧客。 –
當不在時,要小心NULL。你可能會得到一個非常意想不到的結果......不是很容易理解。 – jarlh