关于查询的使用

时间:2013-07-24 15:36:20

标签: sql

我自己解决了很少的SQL查询,

在一个问题中,

  

找到每个大洲最大的国家(按地区),显示大陆,名称和地区:

SELECT continent, name, area
 FROM world x 
  WHERE area >= ALL
    (SELECT area FROM world y
        WHERE y.continent=x.continent
          AND area>0)

我不明白世界x和世界y是什么意思?有人可以解释一下吗?

5 个答案:

答案 0 :(得分:1)

x和y是别名。它允许您在“WHERE y.continent = x.continent”

中识别表格

答案 1 :(得分:0)

x和y用作表的别名(用于参考目的的短替代名称)。这允许在两个不同的范围内使用世界表。

答案 2 :(得分:0)

x和y只是用于限定列的别名:如果你有别名并且使用了两次相同的表,那么列不属于哪个表实例。

在您的情况下,您正在匹配列上的同一个表的两个实例 - continent - 并且别名用于使sql引擎清楚地知道发生了什么。

答案 3 :(得分:0)

这是表名的别名,通常写为:

FROM `table` AS `t`

答案 4 :(得分:0)

xytable aliases。您可以使用它们使查询更简洁/可读和/或使用多次选择同一个表的查询。

在SQL-Server 2005及更高版本中,您可以使用此查询来获得所需的结果:

WITH CTE AS
(
    SELECT continent, name, area,
           rank=dense_rank() over(Partition By x.continent Order By area Desc)
    From world 
)
SELECT continent, name, area FROM CTE WHERE rank = 1
如果每个大陆拥有相同的最大区域,则{p> DENSE_RANK可能会返回多个国家/地区。如果您只想将DENSE_RANK替换为ROW_NUMBER

相关问题