我有一个表(订单),其中存储了订单的所有数据。
我想列出所有从我们这里下订单的客户,但仅限于那些没有下订单的客户,比如说 3 个月。
以下是数据库(订单)中的相关表信息:
order_id、customer_id、名字、姓氏、添加日期
提前感谢您的帮助!
假设您只需要 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
.