【发布时间】:2017-03-17 06:22:44
【问题描述】:
我正在尝试合并列名上的 where 子句。我需要一个列在条件上返回正数,但相同的条件适用于许多列。下面是蛮力示例,用于检查几列上某个范围之间的日期。我的列 OR'd 具有完全相同的条件。
SELECT * FROM foo
WHERE foo.date1 BETWEEN DATE_SUB( DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR), INTERVAL 24 HOUR) and DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR)
OR foo.date2 BETWEEN DATE_SUB( DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR), INTERVAL 24 HOUR) AND DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR);
我更愿意做一些类似的事情:
SELECT * FROM foo
WHERE (foo.date1 OR foo.date2) BETWEEN DATE_SUB( DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR), INTERVAL 24 HOUR) and DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR);
.. 但它仍然适用于跨行的各个列。
我正在使用 MariaDB,但可以从其他风格的 sql 中调整任何解决方案。
【问题讨论】:
标签: mysql sql syntax where mariadb