如何让使用OR条件的SQL查询仅返回单个日期的对应结果
SQL查询修改方案
你原SQL使用OR条件会匹配两个日期的所有符合记录,要仅返回单个日期的全部数据,可以根据你的实际使用场景选择对应修改方案:
场景1:固定返回指定的某一天数据
直接调整WHERE条件,仅保留你需要查询的日期匹配规则即可,比如固定返回2021-04-22的所有工时记录:
SELECT Day, Hours FROM Hours WHERE Day = #2021-04-22#;
场景2:动态优先返回存在数据的日期
优先返回2021-04-22的全部记录,若当天无任何数据才返回2021-04-23的记录,适配你原使用的Access SQL语法写法如下:
SELECT Day, Hours FROM Hours WHERE Day = IIF( EXISTS(SELECT 1 FROM Hours WHERE Day = #2021-04-22#), #2021-04-22#, #2021-04-23# );
场景3:随机返回两个日期中的任意一个的全部数据
每次查询时随机从两个指定日期中选一个返回对应全部记录:
SELECT Day, Hours FROM Hours WHERE Day = IIF( RND() < 0.5, #2021-04-22#, #2021-04-23# );
语法适配说明
如果你使用的是非Access数据库(比如MySQL、SQL Server),仅需要做两处调整即可:
- 日期两侧的
#替换为单引号' IIF函数替换为标准SQL的CASE WHEN语法
内容的提问来源于stack exchange,提问作者Andrew Overs
相关产品推荐
相关产品推荐

