我有这个疑问:不同的结果在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