这是您想要做的原型:
SELECT * FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id)
在这里,id
假设是两个表中的 PK 和 FK。你应该做相应的调整。另请注意,在这种情况下比较 PK 和 FK 很重要。
因此,您的查询应如下所示:
SELECT id, room_name FROM rooms r
WHERE NOT EXISTS
(SELECT * FROM room_events re
WHERE
r.room_id = re.room_id
AND
(
room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200')
)
如果需要,您可以通过在 mysql 客户端中执行查询来检查查询的各个部分。例如,您可以确定以下是否返回任何记录:
SELECT * FROM room_events
WHERE room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200'
如果没有,你已经找到了罪魁祸首,并采取了相应的其他部分:)