我有一张简单的桌子,里面有用户和房间。一个用户可以在多个房间中,我想做的是在一次查询操作中找到用户所在的房间,以及其他人在同一个房间中的哪些房间。
SELECT user, room FROM rooms WHERE user='foobar'
之后我可以简单地进行另一个查询SELECT user FROM rooms WHERE room='theroom'
,但是有没有办法减少 MySQL 查询并提供性能优势?
我有一张简单的桌子,里面有用户和房间。一个用户可以在多个房间中,我想做的是在一次查询操作中找到用户所在的房间,以及其他人在同一个房间中的哪些房间。
SELECT user, room FROM rooms WHERE user='foobar'
之后我可以简单地进行另一个查询SELECT user FROM rooms WHERE room='theroom'
,但是有没有办法减少 MySQL 查询并提供性能优势?
您可以自行加入rooms
表:
SELECT r1.user, r1.room, r2.user
FROM
rooms r1 JOIN rooms r2 ON r2.room = r1.room
WHERE r1.user='foobar'AND r2.user != 'foobar'
这个怎么样:
SELECT r.user, r.room
FROM rooms r JOIN rooms x ON r.room=x.room
WHERE x.user='foobar';
在这种情况下,我认为您可以在查询中使用“IN”子句......
从房间所在的房间中选择用户(从用户 = 'foobar' 的房间中选择房间);