2012-12-28 105 views
1

我有以下查詢:MySQL的子查詢返回多行和內部連接

select user_name as rt, 
     (select source_user_name from tweets t where t.rt_user_name = u.user_name) 
from topUserData u 

現在的MySQL是給我一個錯誤說,子查詢返回不止一行。然而,我想要的是這對一對多的關係。例如,如果USER_NAME是詹姆斯和子查詢返回(琳達,鮑勃,蘇珊娜,桑迪,湯姆),那麼我想該數據將顯示爲:

詹姆斯琳達

詹姆斯·鮑勃

詹姆斯蘇珊娜

詹姆斯·桑迪

詹姆斯·湯姆

我如何從我有這個功能?我也看到這與內部連接相似,但我希望通過子查詢得到答案。所有的幫助表示讚賞。

回答

2

我想你在這種情況下,需要INNER JOIN

SELECT a.user_name as RT, 
     b.source_user_name 
FROM topUserData a 
     INNER JOIN tweets b 
      ON a.user_name = b.rt_user_name 

或(是不是真的需要的子查詢,因爲你沒有在裏面任何特殊行動)

select user_name as rt, source_user_name 
from topUserData u 
    INNER JOIN 
    (
     select DISTINCT source_user_name 
     from tweets t 
    ) ON t.rt_user_name = u.user_name 
+0

有沒有辦法做是一個子查詢? – CodeKingPlusPlus

+0

是的。但我認爲你想要的東西,但你不要把它添加到你的問題。基本上你想要做什麼,你爲什麼要子查詢? ':D' –

+0

是的,我解決了我的問題。我確實需要一個子查詢的解決方案。 – CodeKingPlusPlus

0

你可以使用左連接

select user_name , source_username from topUserData u left join tweets t on t.rt_user_name = u.user_name 
+0

此處不需要'LEFT JOIN'。 –

+0

@JW:這是如果你需要顯示用戶沒有推文 –