MySQL - 如果订单来自新客户,则向表添加列并插入 "tag"

标签 mysql

我有简单的表格:

Order_ID  Client_ID   Date         Order_Status
1         1           01/01/2015   3
2         2           05/01/2015   3
3         1           06/01/2015   3
4         2           10/01/2015   3
5         1           12/01/2015   4
6         1           05/02/2015   3

我想识别来自新客户的订单,这些订单是该客户在 Order_Status = 3 的情况下首次下单的同一个月的订单

因此输出表应如下所示:

Order_ID  Client_ID   Date         Order_Status  Order_from_new_customer
1         1           01/01/2015   3             yes
2         2           05/01/2015   3             yes
3         1           06/01/2015   3             yes
4         2           10/01/2015   3             yes
5         1           12/01/2015   4             NULL
6         1           05/02/2015   3             no

我无法成功找出查询。非常感谢您的帮助。

最佳答案

连接一个子查询,获取每个客户的第一个订单的日期。

SELECT o.*, IF(MONTH(o.date) = MONTH(f.date) AND YEAR(o.date) = YEAR(f.date),
               'yes', 'no') AS order_from_new_customer
FROM orders AS o
JOIN (SELECT Client_ID, MIN(date) AS date
      FROM orders
      WHERE Order_Status = 3
      GROUP BY Client_ID) AS f
ON o.Client_ID = f.Client_ID

关于MySQL - 如果订单来自新客户,则向表添加列并插入 "tag",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383661/

相关文章:

mysql - 仅选择将来的记录

MySQL,同步两个表

php - 有人可以帮助我解决此错误消息吗?我无法弄清楚

php - 从同一个表中选择不同的结果

php - 我如何使用基于 PHP/MySQL 的脚本来禁止网站的 IP block ?

mysql - 使 GROUP_CONCAT 查询更高效

php - 显示选择数据时出现问题

mysql - Liquibase 使用函数创建索引

php - 从两个数据库表中的下拉列表中选择一个值

mysql - 使用起始日期和截止日期过滤记录