gpt4 book ai didi

sql - 多部分标识符无法与表值函数绑定(bind)在左外连接中

转载 作者:行者123 更新时间:2023-12-04 18:44:47 26 4
gpt4 key购买 nike

我写这段代码

SELECT tblprsn.prsnid, tblprsn.name 
FROM tblprsn LEFT OUTER JOIN
(
SELECT tblrtm.rtmid
FROM dbo.getrtmn(tblprsn.prsnid) as getrtmn_1
) AS tblgetrtmn
ON tblprsn.prsnid = tblgetrtmn.rtmid

dbo.getrtmn 是一个表值函数,并且有一个名为 rtmid 的 uniqueidentifier 字段。
prsnid 是唯一标识符

当我运行此 SQL 查询导致错误:

The multi-part identifier " tblprsn.prsnid" could not be bound.

最佳答案

这是您的查询:

SELECT tblprsn.prsnid, tblprsn.name 
FROM tblprsn LEFT OUTER JOIN
(SELECT tblrtm.rtmid
FROM dbo.getrtmn(tblprsn.prsnid) as getrtmn_1
) AS tblgetrtmn
ON tblprsn.prsnid = tblgetrtmn.rtmid

您正在引用子查询中的第一个表。这是不允许的。首先,我不认为子查询是必要的。您只是从第一个表中选择并执行 left outer join保存所有记录。子查询的唯一影响是将行相乘。所以,正如你所写的,这个查询应该做几乎相同的事情(除了重复):
SELECT tblprsn.prsnid, tblprsn.name 
FROM tblprsn;

不过,您可以使用 apply 在原始查询中执行您想要的操作。而不是 join :
SELECT tblprsn.prsnid, tblprsn.name 
FROM tblprsn cross apply
dbo.getrtmn(tblprsn.prsnid) tblgetrtmn
where tblprsn.prsnid = tblgetrtmn.rtmid

关于sql - 多部分标识符无法与表值函数绑定(bind)在左外连接中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869780/

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