SQL存储过程INNER JOIN执行报错4145问题咨询
错误原因
- 核心问题是
dirListingDescriptions表的关联条件不完整,INNER JOIN的ON子句要求返回布尔类型的判断结果,你当前仅写了ON dld.listID,仅给出单个字段属于非布尔表达式,SQL解析到后续WHERE关键字时就触发了4145报错。
修复方案
补全dld表的关联条件即可,常规业务逻辑下dirListingDescriptions表的listID和dirListings表的listid为关联字段,修正后的完整代码如下:
ALTER PROCEDURE [dbo].[spDirectoryLookup] (@LookupName nvarchar(100), @ClientNumber bigint) AS BEGIN SELECT DISTINCT DL.subid, C.ClientNumber, C.ClientName, DL.listid, dld.Description FROM INTELLIGENT_2414_1.DBO.dirListings DL INNER JOIN Intelligent_2414_1.DBO.cltClients C ON DL.subid = C.subid INNER JOIN INTELLIGENT_2414_1.DBO.dirListingDescriptions dld ON dld.listID = DL.listid WHERE dld.Description LIKE '%'+@LookupName+'%' AND DL.subid IN (SELECT subid FROM Intelligent_2414_1.DBO.cltClients C WHERE C.ClientNumber = @ClientNumber) END
补充说明:代码中额外给字段增加了表别名限定,避免多表存在同名字段时出现歧义报错。
内容的提问来源于stack exchange,提问作者David S.
相关产品推荐
相关产品推荐

