mysql - 将两个 MYSQL SELECT 语句组合/合并为一个

标签 mysql

我正在使用单个 SELECT 语句寻求帮助。使用两个语句的示例:

1st: get 40 days from now out to 365 days from now

2nd: get NOW out to 40 days

等于所有 365 天从现在开始偏移 40 天

选择语句1:

SELECT id FROM sales
 WHERE (saledate BETWEEN DATE_ADD(NOW(), INTERVAL 40 DAY) AND DATE_ADD(NOW(), INTERVAL 365 DAY))
 ORDER BY saledate;

选择语句2:

SELECT id FROM sales
 WHERE (saledate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 40 DAY))
 ORDER BY saledate;

最佳答案

为什么不直接使用呢?

SELECT id
FROM sales
WHERE (saledate BETWEEN DATE_ADD(NOW(), INTERVAL 40 DAY) AND DATE_ADD(NOW(), INTERVAL 365 DAY)) OR
       (saledate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 40 DAY))
ORDER BY saledate;

当然,这可以进一步简化:

SELECT id
FROM sales
WHERE saledate BETWEEN (NOW() AND DATE_ADD(NOW(), INTERVAL 365 DAY)
ORDER BY saledate;

虽然这看起来很明显,但我可能遗漏了什么。

编辑:

如果这是一个排序问题,那么 union all 不是要走的路。联合不保证结果的顺序。相反,只需执行以下操作:

SELECT id
FROM sales
WHERE saledate BETWEEN (NOW() AND DATE_ADD(NOW(), INTERVAL 365 DAY)
ORDER BY (saledate >= DATE_ADD(NOW(), INTERVAL 40 DAY) ) DESC,
         saledate;

关于mysql - 将两个 MYSQL SELECT 语句组合/合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27006542/

相关文章:

mysql - In '' mysql'' pid 文件的管理器在没有更新文件的情况下退出

php - 数据库和按用户偏好对值进行排序

mysql - 如何最小化sql查询

MySQL存储函数-追加字符串

php - mysql查询获取连接3个表的计数

php - 工作台输入错误数据

mysql - 按最新时间戳分组和过滤

php - 在 PHP 中循环 csv - 插入和更新

php - 试图获得小于使用 pdo 的值

mysql工作台选择并选择问题