首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有where、AND、OR的SQL Select语句不能正常工作

带有where、AND、OR的SQL Select语句不能正常工作
EN

Stack Overflow用户
提问于 2019-01-19 14:33:24
回答 5查看 207关注 0票数 0

大家好,我的表格中有下面一行作为示例

代码语言:javascript
复制
id      shop_id     start_time      end_time
1       21          10:00           11:00

并且我想检查表中是否存在start_time和end_time我正在使用以下查询但不能正确工作,我哪里错了?

代码语言:javascript
复制
select * 
  from usr_booking 
 where shop_id='21' 
   and start_time between '10:10:00' and '11:01:00' 
    or end_time   between '10:10:00' and '11:01:00'
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-01-19 14:40:28

您需要清楚地将shop_id和时间范围上的检查分开:

代码语言:javascript
复制
SELECT *
FROM usr_booking
WHERE
    shop_id = 21 AND
    (start_time BETWEEN '10:10:00' AND '11:01:00' OR
     end_time BETWEEN '10:10:00' AND '11:01:00');

MySQL中的AND运算符比OR运算符具有更高的优先级。因此,您当前的查询实际上是这样计算的:

代码语言:javascript
复制
SELECT *
FROM usr_booking
WHERE
    (shop_id = 21 AND
     start_time BETWEEN '10:10:00' AND '11:01:00') OR
     end_time BETWEEN '10:10:00' AND '11:01:00';

显然,这与你可能想要的逻辑不同。

票数 2
EN

Stack Overflow用户

发布于 2019-01-19 14:36:35

尝试在这种类型的查询中进行分组

代码语言:javascript
复制
select * from usr_booking where shop_id='21' AND ((start_time between '10:10:00' and '11:01:00') OR (end_time between '10:10:00' and '11:01:00'))

添加额外的括号make groups。

票数 0
EN

Stack Overflow用户

发布于 2019-01-19 14:39:22

尝试此查询:

代码语言:javascript
复制
SELECT *
FROM usr_booking 
Where shop_id='21' AND start_time BETWEEN '10:10:00' AND '11:01:00' 
AND end_time BETWEEN '10:10:00' AND '11:01:00'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54264668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档