gpt4 book ai didi

sql-server - SQL Server 重写左连接

转载 作者:行者123 更新时间:2023-12-03 16:32:49 24 4
gpt4 key购买 nike

我在 SQL Server 中遇到了一个较大的查询问题,我追溯到这部分代码没有按预期执行。

SELECT item_name,item_num,rst_units
FROM tbl_item left join tbl_sales_regional on item_num=rst_item
WHERE rst_month=7 and rst_customer='AB123'

第一个表 (tbl_item) 有 10,000 条记录。第二个表 (tbl_sales_regional) 显示的条件为 83。

执行计划显示 SQL Server 已重写为内部联接,并因此返回 83 个结果,而不是返回 10,000 条记录和 9,917 个空值。

为了达到预期的结果,我必须加入一个子查询。有人可以解释为什么这不起作用吗?

最佳答案

不确定哪些字段属于哪里,但您的 WHERE 条件中似乎有一些来自 tbl_sales_regional 的字段。

将它们移动到 ON 子句中:

SELECT  item_name, item_num, rst_units
FROM tbl_item
LEFT JOIN
tbl_sales_regional
ON rst_item = item_num
AND rst_month = 7
AND rst_customer = 'AB123'

WHERE 子句对连接的结果进行操作,因此这些条件不可能适用于 tbl_sales_regional 返回的任何 NULL 记录加入,因为 NULL 不能等于任何东西。

这就是优化器将您的查询转换为内部联接的原因。

关于sql-server - SQL Server 重写左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com