MySQL查询的问题

MySQL查询的问题,sql,mysql,Sql,Mysql,我有一个表,它正在尝试筛选特定日期之间的特定ID(rid)……但是!我得到的是一个不考虑ID(RID)作为条件的查询。 以下是查询: SELECT * FROM booking WHERE '2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY OR '2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto OR datefrom BETWEEN '

我有一个表,它正在尝试筛选特定日期之间的特定ID(rid)……但是!我得到的是一个不考虑ID(RID)作为条件的查询。 以下是查询:

  SELECT * FROM booking 
  WHERE '2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY 
    OR '2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto 
    OR datefrom BETWEEN '2010-10-01' AND '2010-10-09' - INTERVAL 1 DAY 
   AND **rid = '5' 
   AND active = '1'** 
   LIMIT 0 , 30
这是预订的表格结构:

bid     gid      rid      datefrom        dateto          active
=================================================================
1       1        1        2010-09-16      2010-09-20      1
8       9        2        2010-09-06      2010-09-16      1
7       8        2        2010-09-23      2010-09-28      1
试试这个

SELECT * FROM booking WHERE
('2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY) 
OR ('2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto) 
OR (datefrom BETWEEN '2010-10-01' AND '2010-10-09' - INTERVAL 1 DAY) 
AND rid = '5' AND active = '1' 
LIMIT 0 , 30
试试这个

SELECT * FROM booking WHERE
('2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY) 
OR ('2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto) 
OR (datefrom BETWEEN '2010-10-01' AND '2010-10-09' - INTERVAL 1 DAY) 
AND rid = '5' AND active = '1' 
LIMIT 0 , 30

尝试将括号用于日期条件:

  SELECT * FROM booking 
  WHERE rid = '5' 
   AND active = '1'
   AND ('2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY 
    OR '2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto 
    OR datefrom BETWEEN '2010-10-01' AND '2010-10-09' - INTERVAL 1 DAY) 
   LIMIT 0 , 30

尝试将括号用于日期条件:

  SELECT * FROM booking 
  WHERE rid = '5' 
   AND active = '1'
   AND ('2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY 
    OR '2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto 
    OR datefrom BETWEEN '2010-10-01' AND '2010-10-09' - INTERVAL 1 DAY) 
   LIMIT 0 , 30

我认为您需要在所有OR条件周围使用一些括号作为一个组,以便它知道如何在最后应用AND条件。

我认为您需要在所有OR条件周围使用一些括号作为一个组,以便它知道如何在最后应用AND条件。

与我的问题…但Michael Pakhantsov的解决方案与我的问题相同…但Michael Pakhantsov的解决方案有效fine@majimoto:别忘了接受正确答案(使用勾号)@majimoto:别忘了接受正确答案(使用勾号)