是否可以有一个左联接,其结果将类似于以下假设:

表A:

id   value
1    foo
2    bar
3    foobar


表B:

foreign   foreign_value
1         fish
1         soup


联接的结果应该是表A的每个结果(左联接),并且应该是A和B之间的联接结果:

SELECT * FROM A复杂的连接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时,显示的示例结果集的第一行将不存在。

这样的选择可能吗?

最佳答案

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

你可以使用像

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


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

关于mysql - 复杂的(my)SQL左联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26742119/

10-12 05:36