我有两个 MySQL 表: 会话包含列username、lastSeen、currentOnline 和 包含列username、userLocation、userAge 的用户
我需要选择当前在线用户(currentOnline 等于 1)的信息(userLocation、userAge)。我正在考虑从会话表中选择用户名,然后使用另一个查询循环选择信息,但也许有一个更简单的解决方案?
感谢您的意见:)
使用连接...
SELECT u.userLocation, u.userAge, u.username
FROM users u, session s
WHERE u.username = s.username
AND s.currentlyOnline = ?
这?
是任何值意味着他们在线......我还将用户名添加到选择中,因为您可能希望这个及其愚蠢的运行另一个查询。
您可以使用加入。示例:SELECT userLocation, userAge FROM users INNER JOIN session ON users.username = session.username WHERE session.currentlyOnline = 1
加入将完美地做到这一点:
SELECT users.userLocation, users.userAge, users.username
FROM users
JOIN session ON users.username = session.username
WHERE session.currentlyOnline = '1'
在这里使用加入。从这里可以看出用户名是会话表与用户表的外键。在这种情况下,请使用此查询。
select userLocation, userAge from users as u JOIN session as s ON u.username = s.username AND s.currentlyOnline = 1
使用外键作为一个表的整数和主键总是更好。在这里,如果您将 id 作为用户表中的主键,并将 user_id 作为会话表中的 forignkey 并使用它加入,那就太好了。