一个复杂的SQL语句请教

nielisheng 2007-11-01 01:38:22
declare @a table (a int, b varchar(10))

insert into @a values(1, '1')
insert into @a values(2, '2')
insert into @a values(1, '2')

select * from @a where (a = 1 and b = '1') and (a = 2 and b = '2')


查询结果为什么是空?
...全文
119 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Limpire 2007-11-02
  • 打赏
  • 举报
回复
呵呵,偶尔昏一下正常。
amclap 2007-11-02
  • 打赏
  • 举报
回复
见识了 呵呵
fcuandy 2007-11-01
  • 打赏
  • 举报
回复
select   *   from   @a   where   (a   =   1   and   b   =   '1 ')   or   (a   =   2   and   b   =   '2 ') 
nielisheng 2007-11-01
  • 打赏
  • 举报
回复
抱歉,是昏了。
try999 2007-11-01
  • 打赏
  • 举报
回复
and 查询
GEPIN 2007-11-01
  • 打赏
  • 举报
回复
select * from @a where (a = 1 and b = '1 ') and (a = 2 and b = '2 ')
==>
select * from @a where a = 1 and b = '1 ' and a = 2 and b = '2 '

我们就先把B的过滤条件给去掉:
select * from @a where a = 1 and a = 2

你一定是昏了,语句如何执行的知道么?
这表示,针对表的每一行,它会去查询满足过滤条件的纪录,如果这一行满足条件,就返回。
那么针对每一行,a可能等于1又等于2么,楼主你是在忽悠大家吧。
nielisheng 2007-11-01
  • 打赏
  • 举报
回复
正确的结果是把1,2行取出来。
hyjsmeng 2007-11-01
  • 打赏
  • 举报
回复
艾,这是什么逻辑呀
GEPIN 2007-11-01
  • 打赏
  • 举报
回复
楼主认为结果是什么,你先说说吧
nielisheng 2007-11-01
  • 打赏
  • 举报
回复
是什么逻辑呢?
GEPIN 2007-11-01
  • 打赏
  • 举报
回复
select * from @a where (a = 1 and b = '1 ') or (a = 2 and b = '2 ')
你是要这个结果吧,肯定糊涂了脑袋
GEPIN 2007-11-01
  • 打赏
  • 举报
回复
楼主,这是最基本的逻辑问题。
nielisheng 2007-11-01
  • 打赏
  • 举报
回复
奇怪为什么是空的?
liangCK 2007-11-01
  • 打赏
  • 举报
回复
这为什么不是空?

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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