1

I am solving few sql queries myself,

in a question , which says

Find the largest country (by area) in each continent, show the continent, the name and the area:

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

I don't understand what does he mean by world x and world y ? could anyone please explain that?

4

5 回答 5

1

x 和 y 是别名。它允许您识别“WHERE y.continent=x.continent”中的表

于 2013-07-24T15:39:34.073 回答
0

也就是给表名起别名,一般写成:

FROM `table` AS `t`
于 2013-07-24T15:40:07.360 回答
0

x并且y表别名。您使用它们来使查询更简洁/可读和/或使用像这里一样多次选择同一个表的查询。

在 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

DENSE_RANK 如果它们具有相同的最大面积,则每个大陆可能会返回多个国家/地区。如果您只想要一个替换DENSE_RANKROW_NUMBER.

于 2013-07-24T15:40:52.843 回答
0

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

于 2013-07-24T15:39:42.480 回答
0

x 和 y 只是用于限定列的别名:如果您有别名并两次使用同一个表,则不清楚列属于哪个表实例。

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

于 2013-07-24T15:39:46.713 回答