我自己解决了很少的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是什么意思?有人可以解释一下吗?
答案 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)
x
和y
是table 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
。