为什么---------这个查询语句达不到效果?

雄牛 2017-03-17 11:01:16

我想查找条件在多少到多少之间,但又有一两个例外的情况,但为什么查不出来呢?

如果我要查询EventTag在100和130之间,同时还在208,209时,为什么查不出来?


select * from EventLogView where 1<>2 and (EventTag>=100 and EventTag<=130 or (EventTag in (208,209))) order by ID asc
...全文
207 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称被占用了 2017-03-17
  • 打赏
  • 举报
回复
借2#的测试语句说明下,写的确实没错,是不是你的记录问题,或者EventTag的数据类型问题
create table test(id int identity)
go
insert into test default values
go 30
select * from test where 1 <2 and (id >= 10 and id <= 15 or (id in(24,25)))
go
drop table test
go

id
10
11
12
13
14
15
24
25
昵称被占用了 2017-03-17
  • 打赏
  • 举报
回复
按理写的没错,至少在sql server是可以的,and优先级比or高
  • 打赏
  • 举报
回复
or 前面那个 and EventTag>=100 and EventTag<=130 要 加括号。
卖水果的net 2017-03-17
  • 打赏
  • 举报
回复

-- 你的库中,根本就没有这两个值  208,209 。

create table test(id int identity)
go
insert into test default values
go 30
select * from test where 1 <2 and (id between 10 and 15 or id in(24,25))
go
drop table test
go

id
-----------
10
11
12
13
14
15
24
25

(8 行受影响)


顾西昂 2017-03-17
  • 打赏
  • 举报
回复
你把
(EventTag>=100 and EventTag<=130) 
这段括起来试试
gw6328 2017-03-17
  • 打赏
  • 举报
回复
你题上说的是并且,你语句用的是或, 用或是可以出来的,如果是且肯定没有的。 当 100<a <200 或者 a 为209或208 这种是有结果 但是当 100<a<200 而且 a为209或208是不行的

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧