如果另一个数据库中存在值,则从一个mysql数据库中选择信息

时间:2011-01-24 17:13:02

标签: sql mysql union

我有这个查询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技能有限。

2 个答案:

答案 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

这是good introduction to joins

如果表位于同一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)
相关问题