从子查询返回多行

flvtvl50  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(334)

基本上我有两张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;

结果发现它在那里是有效的,所以我羞愧地回来接受答案,并检查我在查询中弄错的地方(可能是其中一个字段)

xyhw6mcr

xyhw6mcr1#

为什么在联接中使用子查询?应该这样写:

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 ,但如果没有更多关于你想要达到的目标的细节,就无法确定。

相关问题