m1k*_*3y3 14 mysql select not-exists
我在选择表a(id,room_name)中的值时遇到问题,其中表b中没有相应的事件(room_id,room_start,room_finish)
我的查询看起来如下
SELECT id, room_name FROM rooms
WHERE NOT EXISTS
(SELECT * FROM room_events
WHERE room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200')
表a包含多个房间,表b包含房间事件我没有得到结果,以防时间戳内的任何房间有任何事件.我期待所有房间都没有活动.
Sar*_*raz 26
这是您想要做的原型:
SELECT * FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id)
Run Code Online (Sandbox Code Playgroud)
这里,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')
)
Run Code Online (Sandbox Code Playgroud)
如果需要,可以通过在mysql客户端中执行查询来检查查询的各个部分.例如,您可以确保以下内容是否返回任何记录:
SELECT * FROM room_events
WHERE room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200'
Run Code Online (Sandbox Code Playgroud)
如果没有,你找到了罪魁祸首并采取相应的行动与其他部分:)
| 归档时间: |
|
| 查看次数: |
25659 次 |
| 最近记录: |