SQL语句的WHERE中,满足多个不等于的条件
SELECT*FROMTABLE1WHERE(ID<>'XX'ANDNAME<>'YY')期望的结果是,ID不等于XX,而且NAME不等于YY的数据被检索。但是,现在的运...
SELECT * FROM TABLE1 WHERE (ID<>'XX' AND NAME<>'YY')
期望的结果是,ID不等于XX,而且NAME不等于YY的数据被检索。
但是,现在的运行结果是,所有ID不等于XX的都被检索了。
例如:TABLE1为
ID NAME
XX XX
XX YY
XX ZZ
AA BB
期望的结果为检索出
ID NAME
XX XX
XX ZZ
AA BB 展开
期望的结果是,ID不等于XX,而且NAME不等于YY的数据被检索。
但是,现在的运行结果是,所有ID不等于XX的都被检索了。
例如:TABLE1为
ID NAME
XX XX
XX YY
XX ZZ
AA BB
期望的结果为检索出
ID NAME
XX XX
XX ZZ
AA BB 展开
15个回答
展开全部
题目有问题,或者作者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.作者的“不等号”,建议使用“!=”,不知道你用的是什么数据库,会不会是“<>”有问题了。
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.作者的“不等号”,建议使用“!=”,不知道你用的是什么数据库,会不会是“<>”有问题了。
追答
不等号不让输入啊,回复里的两个尖括号都没显示出来
展开全部
根据你的期望结果,貌似你要排除掉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'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据你的期望结果,貌似你要排除掉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'
12SELECT * FROM TABLE1 WHERE NOT (ID='XX' AND NAME='YY')SELECT * FROM TABLE1 WHERE ID<>'XX' or NAME<>'YY'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如 a and (b) :a如果不满足的话 ,应该是不会 判断(b) 的情况的。
a 如果满足的话,才会判断 (b) 的条件
(b) 用括号括起来, 并不表示其 计算时间上的先后顺序, 而是逻辑上的 优先级。
用 (b) 的结果 和 a 进行逻辑判断, 而不会 把(b)内部的内容 和 a 放到一起进行 进行判断
a 如果满足的话,才会判断 (b) 的条件
(b) 用括号括起来, 并不表示其 计算时间上的先后顺序, 而是逻辑上的 优先级。
用 (b) 的结果 和 a 进行逻辑判断, 而不会 把(b)内部的内容 和 a 放到一起进行 进行判断
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是这样吧
SELECT * FROM TABLE1 WHERE NAME<>'YY'
追问
这样的话,ID没有体现出来啊。
ID'XX',没有处理啊。
追答
SELECT * FROM TABLE1 WHERE ID<>'XX' OR NAME<>'YY'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询