[英]Combine/Merge two MYSQL SELECT statements into one
我正在使用单个SELECT
语句寻求帮助。 使用两个语句的示例:
第一:从现在起40天到现在的365天
第二:立即使用40天
等于所有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;
您是否正在尝试使用UNION
获得组合结果,例如
(SELECT id FROM sales
WHERE (saledate BETWEEN DATE_ADD(NOW(), INTERVAL 40 DAY)
AND DATE_ADD(NOW(), INTERVAL 365 DAY))
ORDER BY saledate)
UNION
(SELECT id FROM sales
WHERE (saledate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 40 DAY))
ORDER BY saledate)
为什么不只是使用or
?
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.