【发布时间】:2020-08-07 11:42:02
【问题描述】:
我尝试了几种不同的方式来实现这一点,但我做不到。我正在尝试找出今年尚未预约的客户的 ID。
我的第一个查询需要 永远,并且大部分时间都会超时:
SELECT c.clientId
FROM clients c
WHERE NOT EXISTS (
SELECT a.appointmentId FROM appointments a WHERE a.date >= "2020-02-15" AND c.clientId = a.clientId)
我的第二个查询非常快,但这可能是因为它没有考虑 NOT IN。结果显示的结果与我在没有 NOT EXISTS 的情况下运行查询相同。我认为这意味着我没有正确匹配 a.clientId = c.clientId。但是,我似乎无法弄清楚如何让它发挥作用。
SELECT c.clientId
FROM clients c
WHERE c.clientId NOT IN (
SELECT a.appointmentId FROM appointments a WHERE a.date >= "2020-02-15")
我也尝试了第三种方法,但没有成功,它返回一个空集:
SELECT c.clientId
FROM clients c
LEFT JOIN appointments a
ON a.clientId = c.clientId
WHERE a.appointmentId IS NULL
AND a.date >= '2020-02-15'
提前致谢!
【问题讨论】:
标签: mysql not-exists notin