我四处搜寻,但没有找到任何似乎完全相关的内容,因此我寻求一些帮助。
我有一个包含订单的表,人们可以有多个订单。我需要能够选择 2 年前(2012 年 4 月)购买过但此后没有购买过的用户,以识别我使用电子邮件地址的唯一用户,因为没有唯一的客户 ID。这是订单表字段:
orderid,order date,name,email
我的 SQL 知识有限,但我之前的方法是输出 2012 年 4 月的订单表和 2012 年 5 月至今的另一个表。然后,我比较这两张表以查找此后尚未订购的客户。
我忍不住觉得有一种更有效的方法可以在一个查询中做到这一点。有人可以帮忙吗?
谢谢, 萨姆。
最佳答案
我会在这里使用 LEFT JOIN:
SELECT DISTINCT order1.email
FROM `order` order1
LEFT JOIN (SELECT email FROM `order` WHERE orderdate >= '2012-05-01') order2
ON order1.email = order2.email
WHERE orderdate < '2012-05-01'
AND order2.email IS NULL;
主查询正在检查 2012 年 5 月之前订购的用户,LEFT JOIN
查询正在检查(使用 order2.email IS NULL
)未订购的用户从那时起就订购了。
关于mysql - 输出自 MySQL 中特定日期范围以来未重复订购的客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23223484/