我有2个MySQL表
tableRooms包含酒店的房间
tableRoomsBooked包含房间的预订日期

我需要一个SQL查询,该查询返回2个给定日期之间没有预订的房间。到目前为止,这是我得到的:
SELECT * FROM `tableRooms`
LEFT JOIN `tableRoomsBooked`
ON `tableRooms`.`id` = `tableRoomsBooked`.`room_id`
WHERE (date BETWEEN '2015-01-02' AND '2015-01-30')
....?
Run Code Online (Sandbox Code Playgroud)
该查询仅应获得room_id 2,因为在此期间房间2没有预订。
我的查询应该是什么样的?
小智 5
select *
from tableRooms
where id not in (
select distinct room_id
from tableRoomsBooked
where date between '2015-01-02' and '2015-01-30'
)
Run Code Online (Sandbox Code Playgroud)
这将选择子请求中现有ID的列表,然后将其从主请求中排除。
无论如何,您应该更改“ date”列的名称,因为“ date”也是一种数据类型,也可能会造成混淆。