1
的执行我有两个表TSQL了解查询
Table Visitor
ID Name CityName
1 Jon NY
1 Jon KY
2 Paul NY
1 paul TY
Table City
ID CityName
1 NY
2 KY
3 TY
我必须列出谁已经走访了市表所有城市的游客。
我接受了来自网络的查询,但我不知道它是如何在内部工作的。
查询是
select distinct v1.name from Visitor v1
where not exists
(
select c.CityName from City c
where not exists
(
select v2.CityName from visitor v2 where
v2.CityName=c.CityName and v1.Name=v2.Name
)
)
Kinldy帮助我理解步骤
迭代1
Most outer query v1.Name=jon
outer query c.CityName=NY
inner query V2.CityName = c.CityName (NY=NY)
and v1.Name=v2.Name (Jon =Jon)
inner query return valye (i.e) v2.CityName=NY
NY not exists
(
NY
)
consition失败,所以没有什么回报
迭代2
Most outer query v1.Name=jon
outer query c.CityName=NY
inner query V2.CityName = c.CityName (KY=NY)
and v1.Name=v2.Name (Jon =Jon)
inner query return valye (i.e) v2.CityName=NULL
NY not exists
(
NULL
)
condition fails
(i.e) NOT Exists is true so Jon is returned from outer most query.
我是否理解?
优秀的链接来阅读和理解查询。 – Amit 2010-09-10 19:43:15