初学者关于查询例子的一个简单问题

shinyablue 2013-02-02 12:59:08
表格:

name continent population
China Asia 1300000000
... ... ...

问题:
Find the largest country in each continent, show the continent, the name and the population:


答案:
SELECT continent, name, population FROM world x
WHERE population >= ALL
(SELECT population FROM world y
WHERE y.continent=x.continent
AND population>0)



疑问:在这里设x和y表是什么意思?为什么最后还要加上population>0的条件?

谢谢!
...全文
314 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Kilin_Zhang 2013-02-07
引用 2 楼 shinyablue 的回复:
引用 1 楼 DBA_Huangzj 的回复:x和y是别名,如果不加别名,由于你都是用同一个表,所以会导致SQLServer无法识别字段最终是来源于哪个表。这在自连接的时候常用。 我个人觉得这个population>0好像没多大必要,一般用处只是减少计算population=0的数据,减少计算范围,加快速度而已。 谢谢!我去复习一下自连接。。。 另外popu……
All:对所有数据都满足条件,整个条件才成立,例如:5大于所有返回的id select * from #A where 5>All(select id from #A) 数据中population应该有<=0的
  • 打赏
  • 举报
回复
shinyablue 2013-02-04
引用 1 楼 DBA_Huangzj 的回复:
x和y是别名,如果不加别名,由于你都是用同一个表,所以会导致SQLServer无法识别字段最终是来源于哪个表。这在自连接的时候常用。 我个人觉得这个population>0好像没多大必要,一般用处只是减少计算population=0的数据,减少计算范围,加快速度而已。
谢谢!我去复习一下自连接。。。 另外population>0我试过如果去掉的话,结果会少一行,不清楚是为什么。。。 原题来自这里的第六题: http://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial 非常感谢!
  • 打赏
  • 举报
回复
發糞塗牆 2013-02-02
x和y是别名,如果不加别名,由于你都是用同一个表,所以会导致SQLServer无法识别字段最终是来源于哪个表。这在自连接的时候常用。 我个人觉得这个population>0好像没多大必要,一般用处只是减少计算population=0的数据,减少计算范围,加快速度而已。
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2013-02-02 12:59
社区公告
暂无公告