是否可以有一个左联接,其结果将类似于以下假设:
表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/