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

如何在SQL中编写正确的复合条件查询?实例修正需求

正确SQL查询语句实现需求

原始数据表格

IdNamecoursefaculty
1Ben1s
2Ben1t
3Ben2s
4Tom1s

需求说明

查询姓名为Ben,且未就读faculty为s的course 1的记录,期望结果是Id为2和3的行。

原语句错误分析

原语句:

SELECT * FROM table WHERE Name = "Ben" AND course <> 1 AND faculty <> "s"

错误在于用AND同时限制course <> 1和faculty <> "s",这会过滤掉所有course=1或者faculty=s的Ben记录,而我们要排除的只是同时满足course=1且faculty=s的Ben记录,不是分开排除。

正确的SQL语句

写法一:使用NOT排除特定组合

SELECT * FROM table 
WHERE Name = "Ben" 
AND NOT (course = 1 AND faculty = "s")

这种写法直接明确排除“course为1且faculty为s”的Ben记录,完全匹配需求逻辑。

写法二:用OR拆分否定条件(德摩根定律转换)

根据德摩根定律,NOT (A AND B)等价于NOT A OR NOT B,因此也可以写成:

SELECT * FROM table 
WHERE Name = "Ben" 
AND (course <> 1 OR faculty <> "s")

两种写法效果完全一致,都能得到Id为2和3的目标记录。

内容的提问来源于stack exchange,提问作者Ростислав Романець

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:53:32