MySQL查询的问题
我有一个表,它正在尝试筛选特定日期之间的特定ID(rid)……但是!我得到的是一个不考虑ID(RID)作为条件的查询。 以下是查询: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 '
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:别忘了接受正确答案(使用勾号)