sta*_*ium 2 sql-server left-join conditional-statements
任何人都可以向我解释为什么以下两个查询产生不同的结果?
SELECT
o.*
FROM
Customer c
LEFT JOIN
[Order] o ON o.CustomerID = c.CustomerID AND o.OrderType = 'Cash'
WHERE
c.Country = 'USA'
SELECT
o.*
FROM
Customer c
LEFT JOIN
[Order] o ON o.CustomerID = c.CustomerID
WHERE
c.Country = 'USA'
AND
o.OrderType = 'Cash'
Run Code Online (Sandbox Code Playgroud)
谢谢.
第一个允许订单为NULL,因为它是左连接.
第二个没有,因为它在连接后检查o.OrderType的值.
等价物是(假设OrderType不能为NULL)
SELECT
o.*
FROM
Customer c
LEFT JOIN
[Order] o ON o.CustomerID = c.CustomerID
WHERE
c.Country = 'USA'
AND
(o.OrderType = 'Cash' OR o.OrderType IS NULL)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2599 次 |
| 最近记录: |