php - Mysql Select 去年但不是今年的事件

标签 php mysql inner-join self-join

我需要一些关于查询的指导。

我有一个订单表。它有以下列(以及其他)

OrderID | OrderDate | CustomerID

我想找2012年下单,2013年没有下单的客户。

(实际上我最终会想要更精确的(在 2012 年 3 月订购的客户,而不是 2013 年订购的客户))

我知道我可以做两个查询 -

"SELECT * FROM TABLE WHERE OrderDate BETWEEN 2012-01-01 AND 2012-12-31"
"SELECT * FROM TABLE WHERE OrderDate BETWEEN 2013-01-01 AND 2013-12-31"

然后分析结果,不过好像纯mysql应该可以吧。

也许是 self 加入?还是嵌套的 SELECT?我对这些不是很熟悉,很难找到相关的例子。感谢您的帮助!

最佳答案

不需要连接;仅在按客户分组时过滤订单:

SELECT   CustomerID
FROM     Orders
GROUP BY CustomerID
HAVING   SUM(OrderDate BETWEEN 2012-03-01 AND 2012-03-31)
 AND NOT SUM(OrderDate BETWEEN 2013-01-01 AND 2013-12-31)

关于php - Mysql Select 去年但不是今年的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17537981/

相关文章:

PHP表单验证提交问题?

php - 为未注册用户下载 vbulletin 中的附件文件

php - 从多到多将多行分组为一行

MySQL : select sum(value)

sql-server - 使用一对多 JOIN 进行更新(多列)

MySQL - UNION SELECT 与 RLIKE 和 GROUP BY - 无法插入 INNER JOIN

php - 如何在 Codeigniter 中命名模型?

php - fopen 并获取系统文件描述符

MYSQL:在同一个“单元格”中插入繁体中文和简体中文

mysql - 限制在 INNER JOINS 中不起作用