SQL语句的WHERE中,满足多个不等于的条件

2024-11-30 13:48:32
推荐回答(5个)
回答1:

题目有问题,或者作者sql再运行时写错了。猜测:
1.作者想要的结果是,id等于xx但是name不等于yy记录,这样查询出三个结果是正确的,where条件应该写成where id='xx' and name<>'yy'
2.作者想要的结果是id不等于xx并且name不等于yy的记录,这样查询出的结果应该是一条,就是那条yy bb的记录,where条件没问题,where id<>'xx' and name<>'yy'
3.楼上各位,与或非的转换,再sql里就是and和or的转换,等于和不等于的转换。如,id='xx' and name='yy'等价于(id<>'xx' or name<>'yy')
4.作者的“不等号”,建议使用“!=”,不知道你用的是什么数据库,会不会是“<>”有问题了。

回答2:

根据你的期望结果,貌似你要排除掉ID='XX' AND NAME='YY'这一条记录,根据中学数学,"!(A&&B)"等价于"A||B",所以有2种写法:

SELECT * FROM TABLE1 WHERE NOT (ID='XX' AND NAME='YY')
SELECT * FROM TABLE1 WHERE ID<>'XX' or NAME<>'YY'

回答3:

根据你的期望结果,貌似你要排除掉ID='XX' AND NAME='YY'这一条记录,根据中学数学,"!(A&&B)"等价于"A||B",所以有2种写法:
12SELECT * FROM TABLE1 WHERE NOT (ID='XX' AND NAME='YY')SELECT * FROM TABLE1 WHERE ID<>'XX' or NAME<>'YY'

回答4:

比如 a and (b) :a如果不满足的话 ,应该是不会 判断(b) 的情况的。
a 如果满足的话,才会判断 (b) 的条件

(b) 用括号括起来, 并不表示其 计算时间上的先后顺序, 而是逻辑上的 优先级。
用 (b) 的结果 和 a 进行逻辑判断, 而不会 把(b)内部的内容 和 a 放到一起进行 进行判断

回答5:

应该是这样吧

SELECT * FROM TABLE1 WHERE NAME<>'YY'