SQL语句中两列间使用AND逻辑运算符报错求助
问题解决方法
错误原因
报错的核心是WHERE子句中的bea.BusinessEntityID写法不符合SQL语法规则:SQL要求WHERE中的每个条件必须是布尔表达式(能明确返回真或假的判断逻辑),而直接写字段名属于非布尔类型的表达式,数据库无法将其作为条件解析,因此触发错误。
修正方案
给bea.BusinessEntityID补充明确的判断逻辑,通常此处是要筛选该字段不为空的记录,修改后的完整SQL如下:
select p.BusinessEntityID, p.FirstName, p.LastName, bea.BusinessEntityID, bea.AddressID from Person.Person as p left join Person.BusinessEntityAddress as bea on p.BusinessEntityID = bea.BusinessEntityID where bea.BusinessEntityID IS NOT NULL and bea.AddressID is NOT NULL
优化建议
如果你的需求是仅保留两张表中匹配的记录,可直接将LEFT JOIN改为INNER JOIN,这样无需在WHERE中添加非空判断,效果完全一致:
select p.BusinessEntityID, p.FirstName, p.LastName, bea.BusinessEntityID, bea.AddressID from Person.Person as p inner join Person.BusinessEntityAddress as bea on p.BusinessEntityID = bea.BusinessEntityID
内容的提问来源于stack exchange,提问作者MarsRoboters
相关产品推荐
相关产品推荐

