SELECT
a.foo
b.bar
c.foobar
FROM tableOne AS a
INNER JOIN tableTwo AS b ON a.pk = b.fk
LEFT JOIN tableThree AS c ON b.pk = c.fk
WHERE a.foo = 'something'
AND c.foobar = 'somethingelse'
Run Code Online (Sandbox Code Playgroud)
在where子句之后使用和子句似乎将左连接转换为内连接.我看到的行为是,如果tableThree中没有'somethingelse',将返回0行.
如果我将c.foobar ='somethingelse'移动到join子句中,则存储的连接将像左连接一样运行.
SELECT
a.foo
b.bar
c.foobar
FROM tableOne AS a
INNER JOIN tableTwo AS b ON a.pk = b.fk
LEFT JOIN tableThree AS c ON b.pk = c.fk
AND c.foobar = 'somethingelse'
WHERE a.foo = 'something'
Run Code Online (Sandbox Code Playgroud)
有人能指出我描述为什么会发生这种情况的文件吗?非常感谢你
sql ×1