MySQL“;及&引用;或;条件查询
我需要一种基于MySQL“;及&引用;或;条件查询,mysql,Mysql,我需要一种基于IF条件更改查询条件的方法 SELECT * FROM table WHERE CASE WHEN work_start < work_end THEN @current_time BETWEEN work_start AND work_end ELSE @current_time >= work_start OR @current_time <= work_end END 我将服务可用时间存储在表格中,因此,例如,如果服务从
IF
条件更改查询条件的方法
SELECT *
FROM table
WHERE CASE WHEN work_start < work_end
THEN @current_time BETWEEN work_start AND work_end
ELSE @current_time >= work_start OR @current_time <= work_end
END
我将服务可用时间存储在表格中,因此,例如,如果服务从“08”到“16”可用,我将这些值存储为work\u start
和work\u end
。我需要检查服务当前是否可用,并按如下方式查询:
其中$current\u time>work\u start和$current\u type
但如果服务在夜间可用(例如从“22”到“06”),我需要得到如下结果:
$current\u time>work\u start或$current\u type
如您所见,查询之间的唯一区别是“和”/“或”条件
是否有一个优雅的解决方案或一个可以返回结果的变通方法使用IF()
或CASE
根据情况执行不同的比较
SELECT *
FROM table
WHERE CASE WHEN work_start < work_end
THEN @current_time BETWEEN work_start AND work_end
ELSE @current_time >= work_start OR @current_time <= work_end
END
选择*
从桌子上
当工作开始<工作结束时的情况
然后@current\u工作开始和工作结束之间的时间
ELSE@current\u time>=工作开始或@current\u time您能提供示例数据和预期结果吗?@Jens我将服务可用小时数存储在表格中,因此,例如,如果服务从“08”到“16”可用,我将这些值存储为“工作开始”和“工作结束”。我需要检查该服务当前是否可用,并像这样查询,$current\u time>work\u start和$current\u type
,但如果该服务在夜间可用(例如从“22”到“06”),我需要得到如下结果:$current\u time>work\u start或$current\u type
,正如您所看到的,查询之间的唯一区别是“和”/“或”条件。@Jens谢谢,我对mysql并不陌生,但我想不出一个聪明的解决方案。由于关闭了整整一天,我在另一个表中存储了服务不可用的日期时间(另一个故事)。我想不出解决方法。@gagvirus请将这些细节添加到问题中,而不仅仅是评论。