2012-12-28 60 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:这是如果你需要显示用户没有推文 –