【问题标题】:Single column for multiple rows within WHERE clauseWHERE 子句中多行的单列
【发布时间】: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


    【解决方案1】:

    第一部作品;第二个是语法错误。

    我更喜欢

    BETWEEN NOW() + INTERVAL 16-24 HOUR
        AND NOW() + INTERVAL 16    HOUR
    

    如果 16 与时区有关,请考虑使用 TIMESTAMP 和/或适当地设置系统时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多