MySQL选择3个月内没有订单的客户

时间:2012-11-20 17:14:32

标签: mysql date max

我有一个表(订单),其中存储了订单的所有数据。

我想列出所有已向我们下订单/订单的客户,但将其限制为尚未下订单的客户,比如说3个月。

以下是db(order)的相关表信息:

ORDER_ID, 顾客ID, 名字, 姓, DATE_ADDED

先谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

假设您只想要customer_id,名字和姓氏以及date_added是一些有效的时间字段,如时间戳,日期或日期时间(不是字符串)。

SELECT o.customer_id, o.firstname, o.lastname, MAX(o.date_added) AS latest_date FROM `order` o 
  LEFT JOIN `order` o2 ON o.customer_id = o2.customer_id 
                    AND o2.date_added >= NOW() - INTERVAL 3 MONTH 
 WHERE o2.order_id IS NULL
 GROUP BY o.customer_id, o.firstname, o.lastname

请注意表名称' order'的反引号。这是因为ORDER是Mysql中的保留字。尽量避免使用保留字来命名数据库,表格或列 - 它总是咬你的屁股。

考虑一下这个,给我所有用户,包括如果他们的订单的所有订单信息都在3个月内,然后只显示那些没有订单。

如果您为客户表提供架构,我可以更清洁并避免使用group by