如何在MYSQL中选择多个插入后进行插入

23 浏览
0 Comments

如何在MYSQL中选择多个插入后进行插入

UNION和UNION ALL有什么区别?

admin 更改状态以发布 2023年5月25日
0
0 Comments

UNION和UNION ALL都是将两个不同的SQL结果串联起来。它们之间在处理重复行的方式上有所不同。

  • UNION对结果集执行DISTINCT操作,删除任何重复行。

  • UNION ALL不会删除重复项,因此比UNION更快。

注意:在使用这些命令时,所选的所有列都需要是相同的数据类型。

例如:如果我们有两个表,1)员工表和2)客户表

  1. 员工表数据:

enter image description here

  1. 客户表数据:

enter image description here

  1. UNION示例(它删除所有重复记录):

enter image description here

  1. UNION ALL示例(它只是串联记录,而不是删除重复项,因此比UNION更快):

enter image description here

0
0 Comments

UNION会移除重复的记录(即结果中所有列都相同的记录),UNION ALL则不会。

使用UNION代替UNION ALL会有一定的性能损失,因为数据库服务器需要执行额外的工作以移除重复行,但通常情况下你不需要重复记录(特别是在开发报表时)。

为了标识重复记录,记录必须是可比较类型以及相容类型。这将取决于SQL系统。例如,系统可能会截断所有长文本字段以生成可比较的短文本字段(MS Jet),或者可能拒绝比较二进制字段(ORACLE)。

UNION示例:

SELECT 'foo' AS bar UNION SELECT 'foo' AS bar

结果:

+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)

UNION ALL示例:

SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar

结果:

+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)

0