这是我的示例表(房间预订系统):
id available room_id
----------------------------
1 2014-02-05 4
2 2014-02-06 4
3 2014-02-07 4
4 2014-02-09 4
5 2014-02-10 4
我想查询2014-02-05和2014-02-10之间是否有ID为4的房间。
我知道我可以使用BETWEEN运算符进行查询,但问题是我需要考虑连续的日期范围,所以它应该返回零记录,因为缺少2014-02-08的记录。 任何想法?
感谢
答案 0 :(得分:1)
这是一个想法。计算匹配的行数,然后将这些行与该时段中的天数进行比较:
select room_id
from example
where available between date('2014-02-05') and date('2014-02-10')
group by room_id
having count(*) = datediff(date('2014-02-05'), date('2014-02-10')) + 1;