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
展开
 我来答
fuyh16
2019-04-26 · TA获得超过222个赞
知道小有建树答主
回答量:462
采纳率:82%
帮助的人:118万
展开全部
题目有问题,或者作者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.作者的“不等号”,建议使用“!=”,不知道你用的是什么数据库,会不会是“<>”有问题了。
追答
不等号不让输入啊,回复里的两个尖括号都没显示出来
百度网友6705c13
2017-08-11 · TA获得超过801个赞
知道小有建树答主
回答量:613
采纳率:83%
帮助的人:198万
展开全部

根据你的期望结果,貌似你要排除掉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'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
l7722526
2019-04-26 · TA获得超过2.7万个赞
知道大有可为答主
回答量:2.8万
采纳率:84%
帮助的人:3751万
展开全部
根据你的期望结果,貌似你要排除掉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'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
EatingKun
2019-04-28 · TA获得超过5815个赞
知道大有可为答主
回答量:3185
采纳率:83%
帮助的人:873万
展开全部
比如 a and (b) :a如果不满足的话 ,应该是不会 判断(b) 的情况的。
a 如果满足的话,才会判断 (b) 的条件

(b) 用括号括起来, 并不表示其 计算时间上的先后顺序, 而是逻辑上的 优先级。
用 (b) 的结果 和 a 进行逻辑判断, 而不会 把(b)内部的内容 和 a 放到一起进行 进行判断
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangdawei0
2013-11-09 · 超过13用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:34.7万
展开全部

应该是这样吧

SELECT * FROM TABLE1 WHERE NAME<>'YY'
追问
这样的话,ID没有体现出来啊。
ID'XX',没有处理啊。
追答
SELECT * FROM TABLE1 WHERE ID<>'XX' OR NAME<>'YY'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(13)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式