抱歉,也许这是微不足道的,但我找不到办法做到这一点:
表客户
- 客户编号
- 客户邮箱
- 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/