基本上我有两张桌子。我需要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;
只是发现它在那里工作,所以我羞于接受答案并检查我在查询中搞砸了的地方(可能是其中一个字段)
答案 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
,但如果没有更多有关您要实现的目标的详细信息,则无法确定。