1

我有两个 MySQL 表: 会话包含列username、lastSeen、currentOnline 和 包含列username、userLocation、userAge 的用户

我需要选择当前在线用户(currentOnline 等于 1)的信息(userLocation、userAge)我正在考虑从会话表中选择用户名,然后使用另一个查询循环选择信息,但也许有一个更简单的解决方案?

感谢您的意见:)

4

4 回答 4

0

使用连接...

SELECT u.userLocation, u.userAge, u.username
FROM users u, session s
WHERE u.username = s.username
AND s.currentlyOnline = ?

?是任何值意味着他们在线......我还将用户名添加到选择中,因为您可能希望这个及其愚蠢的运行另一个查询。

于 2013-06-10T16:04:25.567 回答
0

您可以使用加入。示例:SELECT userLocation, userAge FROM users INNER JOIN session ON users.username = session.username WHERE session.currentlyOnline = 1

于 2013-06-10T16:08:17.887 回答
0

加入将完美地做到这一点:

SELECT users.userLocation, users.userAge, users.username
FROM users
JOIN session ON users.username = session.username
WHERE session.currentlyOnline = '1'
于 2013-06-10T16:08:40.190 回答
0

在这里使用加入。从这里可以看出用户名是会话表与用户表的外键。在这种情况下,请使用此查询。

select  userLocation, userAge from users as u JOIN session as s ON u.username = s.username AND s.currentlyOnline = 1 

使用外键作为一个表的整数和主键总是更好。在这里,如果您将 id 作为用户表中的主键,并将 user_id 作为会话表中的 forignkey 并使用它加入,那就太好了。

于 2013-06-10T16:09:04.063 回答