首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

哪位高手能详解一上exists同一张表的比较

2012-09-08 
谁能详解一下exists同一张表的比较--生成测试数据if not object_id(Tempdb..#T) is nulldrop table #TGo

谁能详解一下exists同一张表的比较
--生成测试数据

if not object_id('Tempdb..#T') is null
  drop table #T
Go
Create table #T([ID] int,[Name] nvarchar(1),[Memo] nvarchar(2))
Insert #T
select 1,N'A',N'A1' union all
select 2,N'A',N'A2' union all
select 3,N'A',N'A3' union all
select 4,N'B',N'B1' union all
select 5,N'B',N'B2'
Go
--查询语句
Select * from #T a where exists(select 1 from #T where Name=a.Name and id < a.id)

--查询结果
id name memo
2AA2
3AA3
5BB2

我的理解是,exists 里的语句是这样比较的,name =外部表的name 
比如name = A 与外部表#T a比较,那name=A 的记录有三条,即ID=1,2,3 的三条记录,
然后再是条件id <外表a.id 那第1条记录的ID是小于2,3,这样exists条件就成立了,那这条记录 1,A,A1应该显示出来,而结果为什么没显示出来呢?难道不是这样理解的?这到底是怎么执行的?



[解决办法]

SQL code
Select * from #T a where exists(select 1 from #T where Name=a.Name and id < a.id)--查询结果id name memo2 A A23 A A35 B B2 

热点排行