gpt4 book ai didi

sql - Mysql子查询: Trying to get the last order from a customer

转载 作者:行者123 更新时间:2023-11-29 02:37:56 25 4
gpt4 key购买 nike

抱歉,也许这是微不足道的,但我找不到办法做到这一点:

表客户

  • 客户编号
  • 客户邮箱
  • customer_newsletter(1=是/0=否)

表顺序

  • 订单编号
  • 客户编号
  • 订单状态(1=ok/0=no_ok)

每个客户可以有零个、一个或多个订单。

我正在尝试查询以获取以下人员的所有电子邮件:

1/还不是客户,他们从未下过订单,但他们想收到我的时事通讯

2/已有客户(对应表中的一个或多个订单)。但前提是他们最新订单的状态正常(我不想将时事通讯发送给有问题的客户)

我已经尝试了几种基于具有 MAX 函数的子查询的方法,但找不到好的公式

有什么建议吗?提前致谢

最佳答案

假设您可以使用最大的订单 ID 作为最近的订单 ID,我认为应该可行:

SELECT c.customer_email
FROM customers c
LEFT OUTER JOIN orders o ON o.customer_id = c.customer_id
WHERE c.customer_newsletter = 1 AND o.customer_id IS NULL
UNION
SELECT c.customer_email
FROM customers c
WHERE customer_id IN
(SELECT customer_id FROM orders WHERE order_id IN
(SELECT MAX(order_id) FROM orders WHERE order_status = 1 GROUP BY customer_id)
)

关于sql - Mysql子查询: Trying to get the last order from a customer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2094208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com