我有以下 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/