1

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

我想列出所有从我们这里下订单的客户,但仅限于那些没有下订单的客户,比如说 3 个月。

以下是数据库(订单)中的相关表信息:

order_id、customer_id、名字、姓氏、添加日期

提前感谢您的帮助!

4

1 回答 1

2

假设您只需要 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.

于 2012-11-20T17:18:20.457 回答