我什么时候应该为SQL中的子查询添加TAB



我正在SQLZOO中练习SQL,但很难理解问题#5的解决方案:https://sqlzoo.net/wiki/Window_functions

我从另一个用户@crowtherl 那里复制了表格和问题的描述

这个问题使用表";ge";其中包括英国2015年和2017年的大选结果"ge";包括字段yr、firstName、lastName、选区、政党和选票。问题#5要求学习者展示2017年爱丁堡每个选区获胜的政党。早些时候,教程指出,爱丁堡选区编号为S14000021至S14000026。

解决方案:SQLZOO';s";窗口函数";教程

特别是关于这个代码:

select  constituency,party from 
(
SELECT constituency,party, votes , 
rank() OVER (PARTITION BY constituency order by votes desc) rn
FROM ge
WHERE constituency BETWEEN 'S14000021' AND 'S14000026'
AND yr  = 2017
ORDER BY constituency,votes DESC
) TAB WHERE rn =1

如果我运行上面的查询;TAB";在外部查询中,我得到:";错误:每个派生表都必须有自己的别名">

在四处搜索后,我找不到一个好的答案来解释为什么我需要添加"TAB"。这是MariaDB的特色吗?有人知道吗?非常感谢。

我相信这是标准SQL。为了清楚起见;TAB";是第二次SELECT(即括号内的SELECT(生成的表的别名。它可以是你选择的任何名称(例如"T1"、"Extract"或"Whatever"(,它不必是"T1";TAB";。

最新更新