我有这个查询select latitude, longitude, username, rank from users
,但如果username
数据库中存在online_users
,我只想要该信息。看起来像这样:
id bigint(20)
username varchar(16)
ip varchar(39)
time datetime
因此,如果我的online_users
数据库中有3个用户,我希望来自这3个用户的latitude, longitude, username and rank
表中的users
。我该怎么做呢?我假设UNION
有些东西,但我的sql技能有限。
答案 0 :(得分:0)
你使用INNER JOIN而不是UNION来确保你只获得另一个表中有关系的记录:
SELECT u.latitude, u.longitude, u.username, u.rank
FROM USERS u
JOIN ONLINE_USERS ou ON ou.username = u.username
如果表位于同一MySQL实例的不同数据库中,则使用相应的数据库为表引用添加前缀:
SELECT u.latitude, u.longitude, u.username, u.rank
FROM DB1.USERS u
JOIN DB2.ONLINE_USERS ou ON ou.username = u.username
运行查询的用户需要能够访问表。
答案 1 :(得分:0)
假设这些是同一个数据库中的两个表,而不是两个数据库(如上所述),那么以下任何一个都可以工作:
SELECT latitude, longitude, username, rank
FROM users INNER JOIN online_users ON users.username = online_users.username
SELECT latitude, longitude, username, rank
FROM users WHERE username IN (SELECT username FROM online_users)