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