我正在寻找以下SQL代码:
显示尚未支付任何款项的客户的订单ID。
注意:有一个客户,订单和付款表。 customerID不在付款表中。
感谢您的帮助!
答案 0 :(得分:0)
你没有给予太多的帮助。
select id
from orders o
left join payments p
on p.order_id = o.id
where p.order_id is null
假设我有正确的关系,这将给你所有没有付款的订单。
答案 1 :(得分:0)
听起来你可以使用反连接模式,例如
<div data-bind="compose: 'viewmodel/fol/index'"></div>
表示从SELECT o.orderID
FROM orders o
LEFT
JOIN payments p
ON p.orderID = o.orderID
WHERE p.orderID IS NULL
获取所有行,并匹配orders
。如果payments
与orders
不匹配,则payments
中的行将与orders
值一起返回,而不是&#34;缺少&# 34;来自NULL
的行。 (关键字 payments
前面的关键字 LEFT
告诉MySQL执行&#34;外连接&#34;,从中返回所有行左侧的表(否则满足谓词),即使右侧表中没有匹配的行。)
&#34;技巧&#34;是WHERE子句中的谓词,我们在JOIN
中放弃orders
中具有匹配行的任何行,而payments
的行不会匹配orders
1}}。
还有其他查询模式可以实现相同的结果,例如payments
,NOT IN (subquery)
例如:
NOT EXIST (correlated subquery)
-OR -
SELECT o.orderID
FROM orders o
WHERE o.orderID NOT IN
( SELECT p.orderID
FROM payments p
WHERE p.orderID IS NOT NULL
)