我有一个表(订单),其中存储了订单的所有数据。
我想列出所有已向我们下订单/订单的客户,但将其限制为尚未下订单的客户,比如说3个月。
以下是db(order)的相关表信息:
ORDER_ID, 顾客ID, 名字, 姓, DATE_ADDED
先谢谢你的帮助!
答案 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
。