mysql - 输出自 MySQL 中特定日期范围以来未重复订购的客户

标签 mysql sql

我四处搜寻,但没有找到任何似乎完全相关的内容,因此我寻求一些帮助。

我有一个包含订单的表,人们可以有多个订单。我需要能够选择 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/

相关文章:

javascript - 将 javascript 日期正确格式化为 MySQL

mysql - 给定一个用户,选择具有最常见评分的用户

html - 消除或翻译从 XML 文件导入的 SQL 中的 HTML 字符

mysql - SQL:获取嵌套集中节点的直接下属

mysql - MySQL 5 中的多列主键

php - PHP while 循环中的 MySQL Count 仅返回一个结果然后为 Null

java - hibernate.cfg.xml 中的 Hibernate connection.url - 处理多个参数

mysql - 触发静默忽略/删除 INSERT 上的重复条目

mysql - 如何计算去年未回复的消息?

mysql - 删除外键约束未完全删除