从子查询返回多行

时间:2018-01-08 06:26:30

标签: mysql select join rows

基本上我有两张桌子。我需要table2表中的field2列来返回多行。我尝试了下面的连接(简化了列)但不幸的是它只返回了一个结果。

SELECT table1.field1, table1.field2, table1.field3, sub_q.field4
FROM table1
JOIN (
    SELECT t2.field4, t2.filter1, t2.filter2 FROM table2 t2
) sub_q ON (sub_q.filter1 = table1.id AND sub_q.filter2 = 1) 
##Should return multiple rows
##but returns only one!
WHERE table1.id = ..;

修改:

我在这里创建了一个架构:http://sqlfiddle.com/#!9/1c5737,其中选择查询为

SELECT t1.field1, t1.field2, t1.field3, t2.field1
FROM table1 t1
JOIN table2 t2 ON t2.filter1 = t1.id AND t2.filter2 = 1
WHERE t1.id = 1;

只是发现它在那里工作,所以我羞于接受答案并检查我在查询中搞砸了的地方(可能是其中一个字段)

1 个答案:

答案 0 :(得分:2)

为什么在连接中使用子查询?这是应该写的:

SELECT table1.field1, table1.field2, table1.field3, t2.field1
FROM table1 t1
JOIN table2 t2 ON t2.filter1 = table1.id AND t2.filter2 = 1 

此外,您可能需要LEFT JOIN(或INNER JOIN)代替JOIN,但如果没有更多有关您要实现的目标的详细信息,则无法确定。