【发布时间】:2021-11-02 08:33:32
【问题描述】:
我正在尝试在 MySQL 中使用 NOT IN 语句。但是,我在下面的代码中得到 0 行(没有语法错误)。我确信该语句应该有超过 0 行。我应该调整什么语法?
SELECT DISTINCT member_id
FROM client_payments
INNER JOIN client_purchase_records ON client_purchase_records.id = client_payments.purchase_record_id
WHERE status = 1
AND client_payments.created_at > '2021-10-28 00:00:00'
AND client_payments.created_at < '2021-10-31 23:59:00'
NOT IN(
SELECT DISTINCT member_id
FROM client_payments
INNER JOIN client_purchase_records ON client_purchase_records.id = client_payments.purchase_record_id
WHERE status = 1
AND client_payments.created_at > '2020-9-30 00:00:00'
AND client_payments.created_at < '2021-10-27 23:59:00'
);
两个查询的区别主要是created_at列,我想用周期A(2021-10-28 00:00:00 - 2021-10-31 23:59:00)和周期做“设置差异操作” B(2020-9-30 00:00:00 - 2021-10-27 23:59:00)
-
我要查询2020-9-30 00:00:00 - 2021-10-27 23:59:00 期间付款的member_id
-
减去在 2021-10-28 00:00:00 - 2021-10-31 23:59:00 期间付款的 member_id
-
最后我得到了在 2021-10-28 00:00:00 - 2021-10-31 期间付款但在 2020-9-30 00:00:00 - 2021-10-27 23:59 期间付款的 member_id: 00(新的 member_id 从未显示过)
【问题讨论】:
-
除非我遗漏了什么,否则您的查询是:“查找与 X 不同的成员”。你想得到什么?
-
请分享更多细节。你想达到什么目标?您尝试过什么来解决问题?
-
AND x < y NOT IN (SELECT whatever)错误但语法正确。您没有收到语法错误,是的,但是查询错误。 -
两个查询的差异主要是关于
created_at列,我想做“设置差异操作”,周期为A(2021-10-28 00:00:00 - 2021-10-31 23 :59:00 )和B期(2020-9-30 00:00:00 - 2021-10-27 23:59:00) -
1.我想查询在 2020-9-30 00:00:00 - 2021-10-27 23:59:00 期间付款的 member_id 2. 减去在 2021-10-28 00:00:00 - 2021 期间付款的 member_id -10-31 23:59:00 3. 最后我得到了在 2021-10-28 00:00:00 - 2021-10-31 期间付款但在 2020-9-30 00:00:00 - 2021 期间付款的 member_id -10-27 23:59:00(新的 member_id 从未显示过)