为何SQL的UNION ALL能识别不同字段?Datacamp模拟器是否有BUG?
关于UNION ALL结果列名的疑问解答
这不是Datacamp模拟器的BUG,是SQL的标准规则:
- 当使用
UNION/UNION ALL这类集合操作符时,最终结果集的列名由第一个查询语句的列名决定,后续查询的列名会被直接忽略,只要求各查询的列数量、对应位置的数据类型兼容即可。 - 你的代码里第一个查询选取的是
code列,所以最终结果集的列名就显示为code;第二个查询的country_code只是把对应位置的数据填充到这个列中,两者只要数据类型匹配就能完成合并。 - 最后用
ORDER BY code, year排序也是合法的,因为排序时识别的是结果集已经确定的列名(即第一个查询定义的code)。
你的SQL代码:
-- Select fields SELECT code, year -- From economies FROM economies -- Set theory clause union all -- Select fields SELECT country_code, year -- From populations FROM populations -- Order by code, year ORDER BY code, year;
内容的提问来源于stack exchange,提问作者Aaron Tsai
相关产品推荐
相关产品推荐

