php - MySQL 'OR' 语句 - 确定哪个部分返回行

标签 php mysql

我有以下 MySQL SELECT 语句(连同 PHP):

SELECT *
FROM EVENTS
WHERE (
 time1
 BETWEEN "2013-04-22 19:30:00"
 AND "2013-04-22 19:50:00"
)
OR (
 time2
   BETWEEN "2013-04-22 19:30:00"
   AND "2013-04-22 19:50:00"
)

上述查询返回以下行:

    id   |        time1        |       time2        |
   -------------------------------------------------
    26     2013-04-22 19:45:00  2013-04-26 12:25:00

所以,很明显,time1 是返回行的原因。

我的问题是:当我使用上面的 SELECT 语句遍历行时,我如何确定是 time1 还是 time2 “触发”(由于缺少更好的术语)要返回的行?

任何帮助都会很棒!

最佳答案

SELECT  *,
        IF(time1 BETWEEN "2013-04-22 19:30:00" AND "2013-04-22 19:50:00", 
          'Time1', 'Time2')  Result
FROM    EVENTS
WHERE   time1 BETWEEN "2013-04-22 19:30:00" AND "2013-04-22 19:50:00" OR
        time2 BETWEEN "2013-04-22 19:30:00" AND "2013-04-22 19:50:00"

名为 Result 的附加列只是测试条件返回 true 的列。例如,如果两者都返回 true,则只有 time1 会出现在 result 列上。

更新 1

SELECT  *,
        CASE
            WHEN time1 BETWEEN '2013-04-22 19:30:00' AND '2013-04-22 19:50:00' AND 
                 time2 BETWEEN '2013-04-22 19:30:00' AND '2013-04-22 19:50:00'
            THEN 'Time1 and Time2'
            WHEN time1 BETWEEN '2013-04-22 19:30:00' AND '2013-04-22 19:50:00' 
            THEN 'Time1'
            ELSE 'Time2'
        END Result
FROM    EVENTS
WHERE   time1 BETWEEN '2013-04-22 19:30:00' AND '2013-04-22 19:50:00' OR
        time2 BETWEEN '2013-04-22 19:30:00' AND '2013-04-22 19:50:00'

关于php - MySQL 'OR' 语句 - 确定哪个部分返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16160425/

相关文章:

javascript - Express JS + Multer 文件上传前查询数据库

php - OpenCart 是否对 OWASP 前 10 强?

php - cronjob 不与 codeigniter 一起运行

PHP 警告 : Unknown: Input variables exceeded 1000

MySQL to SQL Server Migration Assistant 不见了?

java - 在服务器中部署后出现错误的 SQL 语法异常

PHP 将字符串转换为持续时间

php - 通过 Jquery AJAX 传递 PHP 变量

php - MySQL Select 查询在终端中运行。 php 准备语句失败

php - 在 PHP 中动态更改 mysqli 连接超时