复杂(我的)SQL左连接

时间:2014-11-04 18:14:55

标签: mysql join null left-join

是否可以使用左连接,这将产生如下假设的结果:

表A:

id   value
1    foo
2    bar
3    foobar

表B:

foreign   foreign_value
1         fish
1         soup

连接的结果应该是表A(左连接)的每个结果,另外还有A和B之间的连接结果:

SELECT * FROM复杂的连接B ON A.id = B.foreign:

id   value    foreign   foreign_value
1    foo      NULL      NULL
1    foo      1         fish
1    foo      1         soup
2    bar      NULL      NULL
3    foobar   NULL      NULL

执行正常LEFT JOIN时,显示的example-resultset的第一行将不存在。

这样的选择可能吗?

1 个答案:

答案 0 :(得分:1)

不,这样的连接是不可能的,因为你不会得到第一行。

您可以使用像

这样的联盟
SELECT a.id, a.value, b.foreign, b.foreign_value 
FROM A inner join B ON A.id=B.foreign
    UNION
SELECT a.id, a.value, null, null
FROM A

这将在您的示例中给出预期结果,但我不明白您为什么尝试这样做。因此,我不知道这是否在一般情况下给出了预期的结果。