You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:05:30