2使用子查询将SQL查询转换为1

时间:2013-11-11 08:47:18

标签: mysql sql join subquery

我有一个名为“评论”的表,其中包含用户名,评论和评论组,即

Thomas    "Hello"              Group1
John      "A Comment"          Group1
Bill      "Another Comment"    Group2
Thomas    "etc"                Group3

一个名为“Groups”的表,其中包含组名,并且该组是该组的一部分。即。

Group1    Thomas
Group2    Bill
Group3    Thomas
Group3    John

所以托马斯在一起是第1组和第3组的一部分我将得到:

$sql = mysql_query("SELECT * FROM Groups WHERE username = $username");

这样($ sql)保存[group1]和[group3]。我想从“评论”中选择所有内容,其中group =在上述查询(1或3)中找到的任何组。

所以它会是:

SELECT * FROM Comments WHERE group = (SELECT group FROM Groups WHERE username = $username);

但我很确定你不能这样做:P我已经研究过UNION和JOIN,但我认为这些不是我想要的吗?

我希望这是有道理的。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

使用IN()代替=

SELECT * FROM Comments 
WHERE `group` IN (SELECT `group` FROM Groups WHERE username = '$username')

答案 1 :(得分:0)

您可以使用加入

SELECT c.* FROM Comments c 
JOIN  Groups g  ON (c.username = g.username )
WHERE g.username = '$username'