基本上我有两张table。1和2。我需要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条答案
按热度按时间xyhw6mcr1#
为什么在联接中使用子查询?应该这样写:
而且你可能需要
LEFT JOIN
(或INNER JOIN
)而不是JOIN
,但如果没有更多关于你想要达到的目标的细节,就无法确定。