【问题标题】:Where clause skips conditionWhere 子句跳过条件
【发布时间】:2019-10-21 11:52:06
【问题描述】:

我目前正在做一个酒店网站的项目,目前我正在研究预订概览。

我现在的查询跳过了一个关键步骤,它不起作用有没有人对此有解决方案

我曾尝试更改括号并在 google 上搜索,但一无所获

SQL

select * 
  from reservations 
 where room_id = 1 
   and (CURRENT_DATE > reservation_start AND CURRENT_DATE < reservation_end) 
    or (CURRENT_DATE > reservation_start - 7);

目前它获取所有房间,而不是已分配的房间。

【问题讨论】:

  • 至少显示 5-10 行的表格列(及其数据类型)
  • 你能删除最后一个or 条件并检查它是否为我提供数据吗?

标签: mysql mariadb


【解决方案1】:

您需要在 CURRENT_DATE 条件周围加上括号,因为 and 的绑定比 or 强:

select * from reservations 
where room_id = 1 
and ((CURRENT_DATE > reservations.reservation_start AND CURRENT_DATE < reservations.reservation_end) 
  or (CURRENT_DATE > reservations.reservation_start - 7)
);

【讨论】:

【解决方案2】:

您在这里遗漏了括号。而且查询的目的也变了。

select * from reservations 
  where room_id = 1 
    and ((CURRENT_DATE > reservations.reservation_start AND
          CURRENT_DATE < reservations.reservation_end) or 
          (CURRENT_DATE > reservations.reservation_start - 7));

【讨论】:

    猜你喜欢
    • 2013-12-19
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2014-09-30
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多