sql and和or的问题

declare@sintset@s=?select*fromtable_1where@s=1and@s=2or@s=3这里的3个条件运行顺序是什么样的?如果@s=1成立,... declare @s int
set @s = ?
select * from table_1 where @s=1 and @s=2 or @s=3

这里的3个条件运行顺序是什么样的?
如果@s=1成立, 后面的2个还会运行吗?
如果@s=2成立, 另外的2个会运行吗?
如果@s=3成立, 另外的2个会运行吗?
展开
 我来答
欧力士中国
推荐于2018-03-23 · TA获得超过1799个赞
知道小有建树答主
回答量:769
采纳率:0%
帮助的人:756万
展开全部
对于where语句后面的3个条件都会运行,不会因为满足某个条件而摒弃另外2个条件。
只是条件匹配的顺序不同,返回的结果也不同。

and优先级高于or
可参考以下文档的测试,写得比较清楚。http://wenku.baidu.com/view/0692ab27ccbff121dd368332.html
对于你的问题中的sql,你目前的写法返回的结果是满足@s=1 and @s=2的,或者满足@s=3的
如果你想要的是满足@s=1 和 @s=2 或者@s=1 和@s=3的
应该写成@s=1 and ((@s=2 or @s=3)

参考资料: http://zhidao.baidu.com/question/404028489.html?oldq=1

frostweek
2012-06-28 · TA获得超过2.3万个赞
知道大有可为答主
回答量:9277
采纳率:87%
帮助的人:8253万
展开全部
首先,肯定所有or连接的过滤条件都要参与判断,只有一种情况可以省略,就是如果@s=1不成立,那@s=2就无需判断了,但不管遇到什么情况,@s=3都要进行判断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecff4ecf9a
2012-06-28 · 超过71用户采纳过TA的回答
知道答主
回答量:325
采纳率:0%
帮助的人:202万
展开全部
你这样的写法结果是:select * from table_1 where ( @s=1 and @s=2 ) or @s=3 懂了没
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式