全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

MySQL的select语句怎么输出多行常量?

发布时间:2023-10-13 13:53:48
发布人:xqq

一、MySQL的select语句输出多行常量的方法

使用union all运算符将多个 SELECT 查询的结果集组合起来作为一个更大的结果集输出。

例子:

SELECT 'ABC' AS col1, '123' AS col2UNION ALLSELECT 'DEF' AS col1, '456' AS col2;

在以上代码中,我们定义了两个 SELECT 语句,每个 SELECT 语句都选择了两个常量值,并使用 UNION ALL 运算符将两个结果集组合起来。输出结果如下:

+------+------+ | col1 | col2 | +------+------+ | ABC  | 123  | | DEF  | 456  | +------+------+

在这个例子中,我们定义了两个 SELECT 语句,每个 SELECT 语句都返回两个常量值,并使用 UNION ALL 运算符将这些结果集组合在一起,形成一个包含两个行的结果集。需要注意的是,每个 SELECT 语句返回的列数和数据类型必须相同,否则将会出现错误。

二、union all 运算符

union all 运算符使用同名的物理运算符来实现。union all 是一种相当简单的操作,仅在查询要移动大量数据时才应并行使用它。

1、并行 union all

要生成并行的 union all,少数的条件是它的操作数必须具有相同的度,而无论这些操作数具有何种分区类型。

以下示例(使用表HA2)显示了要并行处理的 union all 运算符。exchange 运算符的位置高于 union all 运算符,这表示它要由多个线程共同处理:

create table HA2(a1 int, a2 int, a3 int)partition by hash(a1, a2) (p1, p2)select * from RA2union allselect * from HA2QUERY PLAN FOR STATEMENT 1 (at line 1).Executed in parallel by coordinating process and 2 worker processes.The type of query is SELECT.ROOT:EMIT Operator    |EXCHANGE Operator (Merged)    |Executed in parallel by 2 Producer and 1 Consumer      processes.     |    |   |EXCHANGE:EMIT Operator    |   |    |   |   |UNION ALL Operator has 2 children.    |   |   |    |   |   |   |SCAN Operator    |   |   |   |  FROM TABLE    |   |   |   |  RA2    |   |   |   |  Table Scan.. . . . . . . . . . . . . . . . . . .    |   |   |   |  Executed in parallel with a 2-way                    partition scan.. . . . . . . . . . . . . . . . . . .    |   |   |    |   |   |   |SCAN Operator    |   |   |   |  FROM TABLE    |   |   |   |  HA2    |   |   |   |  Table Scan.    . . . . . . . . . . . . . . . . . . .    |   |   |   |  Executed in parallel with a 2-way                    partition scan.

2、串行 union all

在下一示例中,来自 union 运算符每一侧的数据分别由每一侧的选择性谓词加以限制。

要通过 union all 运算符发送的数据量将很少,足以决定不并行运行联合。相反,通过在 union 的每一侧都放置 2 对 1 的 exchange 运算符,将对表 RA2 和 HA2 的每次扫描进行组织。结果操作数随后由 union all 操作符并行处理:

select * from RA2where a2 > 2400union allselect * from HA2where a3 in (10,20)
Executed in parallel by coordinating process and 4 worker processes.7 operator(s) under rootThe type of query is SELECT.ROOT:EMIT Operator |UNION ALL Operator has 2 children. | |   |EXCHANGE Operator (Merged) |   |Executed in parallel by 2 Producer and 1              Consumer processes. |   | |   |   |EXCHANGE:EMIT Operator |   |   | |   |   |   |SCAN Operator |   |   |   |  FROM TABLE |   |   |   |  RA2 |   |   |   |  Table Scan. |   |   |   |  Executed in parallel with a 2-way                      partition scan. | |   |EXCHANGE Operator (Merged) |   |Executed in parallel by 2 Producer and 1              Consumer processes. |   | |   |   |EXCHANGE:EMIT Operator |   |   | |   |   |   |SCAN Operator |   |   |   |  FROM TABLE |   |   |   |  HA2 |   |   |   |  Table Scan. |   |   |   |  Executed in parallel with a 2-way                      partition scan.

延伸阅读1:MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是较好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

#it技术干货

相关文章

像爱奇艺、优酷等视频网站的数据库是怎么设计的?

像爱奇艺、优酷等视频网站的数据库是怎么设计的?

2023-10-13
为什么mysql中删除某一列的主键索引后另一列会从少数索引变成主键索引?

为什么mysql中删除某一列的主键索引后另一列会从少数索引变成主键索引?

2023-10-13
怎么用客户端在外网远程内网的liunx服务器,登陆内网里的其他linux服务器上的oracle数据库?

怎么用客户端在外网远程内网的liunx服务器,登陆内网里的其他linux服务器上的oracle数据库?

2023-10-13
应用中的数据库连接池中的连接,应用使用后什么时候释放返还到连接池中的?

应用中的数据库连接池中的连接,应用使用后什么时候释放返还到连接池中的?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取