sql - “unionall”和“union all”的不同结果集
问题描述
为什么我们会为“unionall”和“union all”得到不同的结果集?
Select null
Union
Select null
Union all
Select null
#
Select null
Union
Select null
Unionall
Select null
解决方案
据我所知,UNIONALL
不是任何 SQL 方言中的有效运算符/关键字。
如果您在 Microsoft SQL Server 中运行示例(为了示例),则会返回以下结果:
查询 1 - 单个结果集如下:
NULL
NULL
查询 2 - 两个结果集:
NULL
和
NULL
演示:https ://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=a1cde2b7af1e376fd5d9c1c780c6142b
第二个查询中发生的事情Unionall
是被视为列别名。尽管您已将其写在单独的行上,但这并不重要。如果你把它写成
Select null Unionall
效果会更清楚。独立运行该行会显示它为该列命名:https ://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=cd796a0f3a16156d56d2fe3d6d5f8459
因此,您的第二个查询实际上是两个单独的查询,而不是一个联合查询。(列名不会出现在您的版本中,因为您已将它与SELECT NULL
上面的另一个合并,并且合并中第一个查询的列名优先。)
推荐阅读
- elasticsearch - 气流 web-ui 无法从弹性搜索中检索日志
- node.js - 为什么 io.to(socketid).emit() 从第一次开始就不起作用?
- angular - 角度样式问题(primeng - primeflex)
- c# - 我无法在统一编辑器中创建 ac# 脚本
- visual-studio-code - VSCode 无法安装 C/C++ 扩展
- pie-chart - 将 json 数据从 PHP 传递到 javascript - Echart 饼图
- email - 如何区分电子邮件服务提供商域和公司域?
- machine-learning - 模块“tensorflow.compat.v2.__internal__”没有属性“register_clear_session_function”
- python - 跨所有模型子集 Django 表
- android - 在 linuxmint19 上对本机 cli 做出反应以进行 android 安装,给出错误