广告
返回顶部
首页 > 资讯 > 数据库 >UNION和UNION ALL怎么在MySQL中使用
  • 712
分享到

UNION和UNION ALL怎么在MySQL中使用

2024-04-02 19:04:59 712人浏览 独家记忆
摘要

本篇文章为大家展示了UNION和UNioN ALL怎么在Mysql中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MySQL中的UNION

本篇文章为大家展示了UNION和UNioN ALL怎么在Mysql中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

MySQL中的UNION

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:

select * from GC_dfys union select * from ls_jg_dfys

这个sql在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。

MySQL中的UNION ALL

而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下:

select * from gc_dfys union all select * from ls_jg_dfys

使用Union,则所有返回的行都是唯一的,如同您已经对整个结果集合使用了DISTINCT,若果多表查询结果中有完全一致的数据,mysql将自动去重

使用Union all,则不会排重,返回所有的行

如果您想使用ORDER BY或LIMIT子句来对全部UNION结果进行分类或限制,则应对单个地SELECT语句加圆括号,并把ORDER BY或LIMIT放到最后一个的后面:

(SELECT a FROM tbl_name WHERE a=10 AND B=1) 
UNION
(SELECT a FROM tbl_name WHERE a=11 AND B=2)
ORDER BY a LIMIT 10;

麻烦一点也可以这么干:

select userid from (
select userid from testa union all select userid from testb) t 
order by userid limit 0,1;

在子句中。order by 配合limit使用才有意义,如果不配合使用,将被语法分析器优化时除去

如果你还想group by,而且还有条件,那么:

select userid from (select userid from testa union all select userid from testb) t group by userid having count(userid) = 2;

注意:在union的括号后面必须有个别名,否则会报错

当然了,如果当union的几个表的数据量很大时,建议还是采用先导出文本,然后用脚本来执行

因为纯粹用sql,效率会比较低,而且它会写临时文件,如果你的磁盘空间不够大,就有可能会出错

Error writing file '/tmp/MYLsivgK' (Errcode: 28)

例子:

DROP TABLE IF EXISTS `ta`;
CREATE TABLE `ta` (
 `id` varchar(255) DEFAULT NULL,
 `num` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of ta
-- ----------------------------
INSERT INTO `ta` VALUES ('a', '5');
INSERT INTO `ta` VALUES ('b', '10');
INSERT INTO `ta` VALUES ('c', '15');
INSERT INTO `ta` VALUES ('d', '10');
 
-- ----------------------------
-- Table structure for `tb`
-- ----------------------------
DROP TABLE IF EXISTS `tb`;
CREATE TABLE `tb` (
 `id` varchar(255) DEFAULT NULL,
 `num` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of tb
-- ----------------------------
INSERT INTO `tb` VALUES ('b', '5');
INSERT INTO `tb` VALUES ('c', '15');
INSERT INTO `tb` VALUES ('d', '20');
INSERT INTO `tb` VALUES ('e', '99');

此时 ta  tb 对应的c字段的num是一样的

sql:

SELECT id,SUM(num) FROM (
  SELECT * FROM ta
    UNION ALL
  SELECT * FROM tb) as tmp
  GROUP BY id

运行结果: 

UNION和UNION ALL怎么在MySQL中使用

若:

SELECT id,SUM(num) FROM (
  SELECT * FROM ta
    UNION
  SELECT * FROM tb) as tmp
  GROUP BY id

运行结果:

UNION和UNION ALL怎么在MySQL中使用

使用Union,则所有返回的行都是唯一的,如同您已经对整个结果集合使用了DISTINCT,若果多表查询结果中有完全一致的数据,mysql将自动去重

使用Union all,则不会排重,返回所有的行

上述内容就是UNION和UNION ALL怎么在MySQL中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: UNION和UNION ALL怎么在MySQL中使用

本文链接: https://www.lsjlt.com/news/55375.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • UNION和UNION ALL怎么在MySQL中使用
    本篇文章为大家展示了UNION和UNION ALL怎么在MySQL中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MySQL中的UNION...
    99+
    2022-10-18
  • mysql中UNION和UNION ALL有什么区别
    这篇文章给大家分享的是有关mysql中UNION和UNION ALL有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在mysql中如何想要对两个结果集进行合并操作,可以使用UNION...
    99+
    2023-06-14
  • SQL UNION和UNION ALL操作符怎么使用
    SQL UNION和UNION ALL操作符用于合并两个或多个SELECT语句的结果集。UNION操...
    99+
    2023-10-12
    SQL
  • SQL中UNION关键字怎么用
    小编给大家分享一下SQL中UNION关键字怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SQL中的UNION...
    99+
    2022-10-19
  • MySQL中UNION操作符有什么用
    这篇文章给大家介绍MySQL中UNION操作符有什么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MySQL UNION 操作符用于连接两个以上的 SELECT...
    99+
    2022-10-18
  • mysql中UNION操作符的作用是什么
    本篇文章给大家分享的是有关mysql中UNION操作符的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mysql中UNION操作符是什么MySQL U...
    99+
    2023-06-14
  • Mariadb SELECT子查询及UNION怎么用
    这篇文章主要介绍“Mariadb SELECT子查询及UNION怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mariadb SELECT子查询及UNION怎么用”文章...
    99+
    2023-06-27
  • union all在mysql中怎么使用
    本篇内容主要讲解“union all在mysql中怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“union all在mysql中怎么...
    99+
    2022-10-19
  • SQL中的union和union all怎么使用
    这篇文章主要介绍了SQL中的union和union all怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL中的union和u...
    99+
    2023-03-01
    sql union union all
  • mysql中Union All怎么用
    这篇文章给大家分享的是有关mysql中Union All怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在mysql数据库使用UNION 时,会把结果集中重复的记录删掉,也正因为做了去重操作...
    99+
    2023-06-14
  • mysql中union和union all的使用及注意事项
    目录1. sql中 union 和 union all 的用法2. 注意事项2.1、UNION 和 UNION ALL 内部的 SELECT...
    99+
    2022-11-13
    mysql union和unionall区别 mysql的union和union all union和union all
  • mysql中union和union all的使用及注意事项
    在MySQL中,UNION和UNION ALL是用于合并两个或多个SELECT语句的结果集的操作符。它们的主...
    99+
    2023-08-11
    MySQL
  • mysql中使用union和union all要注意哪些事项
    在使用UNION和UNION ALL时,需要注意以下事项:1. UNION和UNION ALL的区别...
    99+
    2023-08-11
    mysql
  • sql中union all怎么使用
    在SQL中,UNION ALL用于合并两个或多个SELECT语句的结果集,并返回一个包含所有记录的结果集。与UNIO...
    99+
    2023-08-25
    sql
  • sql中union和union all的用法是什么
    这篇文章给大家介绍sql中union和union all的用法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用...
    99+
    2023-06-28
  • MySQL怎么使用union all获得并集排序
    这篇文章将为大家详细讲解有关MySQL怎么使用union all获得并集排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。项目中有时候因为某些不可逆转的原因使得...
    99+
    2022-10-18
  • mysql中union怎么使用
    这篇文章主要讲解了“mysql中union怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中union怎么使用”吧! ...
    99+
    2022-10-19
  • sql中union all的使用方法是什么
    UNION ALL是用于将两个或多个SELECT语句的结果组合成一个结果集的操作符。与UNION不同的是,U...
    99+
    2023-10-12
    sql
  • sql中的union怎么使用
    在SQL中,UNION是一种用于合并两个或多个SELECT语句结果集的操作符。使用UNION时,要求两个SE...
    99+
    2023-09-12
    sql
  • 使用MySQL中BIN()函数的方法是什么
    小编给大家分享一下使用MySQL中BIN()函数的方法是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! M...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作