我正在使用单个 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/