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

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的条件?

谢谢!
...全文
341 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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的数据,减少计算范围,加快速度而已。

34,837

社区成员

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

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