相关疑难解决方法(0)

左连接变成内连接

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

19
推荐指数
3
解决办法
1万
查看次数

标签 统计

sql ×1