2011-01-24 61 views
1

我有這個查詢select latitude, longitude, username, rank from users,但我只想要那個信息,如果username存在於我的online_users數據庫中。看起來像這樣的:如果在另一個數據庫中存在數據,請從一個mysql數據庫中選擇信息

id bigint(20)   
username varchar(16) 
ip varchar(39) 
time datetime 

所以,如果我有我的online_users分貝3級的用戶,我想從我的userslatitude, longitude, username and rank從這些3個用戶。我該怎麼做呢?我認爲UNION的東西,但我的SQL技能是有限的。

+0

你混淆數據庫和表的想法? – 2011-01-24 17:15:43

+0

是的,我很抱歉。 – ganjan 2011-01-24 17:32:18

回答

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) 
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 

運行查詢的用戶需要訪問的表。

相關問題