mysql union all用法,mysql中union和union all的区别,MySQL中UNION与UNION ALL的基本使用方法

mysql union all用法,mysql中union和union all的区别,MySQL中UNION与UNION ALL的基本使用方法

本文主要介绍了MySQL中UNION和UNION ALL的基本使用方法。通过示例代码非常详细,对大家学习或使用MySQL有一定的参考价值。有需要的话一起学吧。

在数据库中,UNION和UNION ALL关键字都是将两个结果合二为一,但在使用和效率上是不同的。

MySQL中的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子句对所有联合结果进行分类或限制;您应该将单个SELECT语句括起来,并将ORDER BY或limit放在最后一个语句之后:

(从tbl_name中选择a,其中a=10,B=1)

联盟

(从tbl_name中选择a,其中a=11,B=2)

按极限10排序;

麻烦也可以这样做:

从以下位置选择用户id(

从testa union all中选择userid

order by userid限制0,1。

在条款中。Order by只有在与limit一起使用时才有意义。如果不一起用,解析器优化的时候会去掉。

如果仍然要分组,并且有条件,那么:

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

注意:union的括号后面必须有一个单独的名称,否则将会报告错误。

当然,如果有几个union表的数据量很大,建议先导出文本,然后用脚本执行。

因为纯粹用sql会效率很低,而且会写临时文件。如果您的磁盘空间不够大,您可能会出错。

写入文件“/tmp/MYLsivgK”时出错(错误代码:28)

示例:

如果存在,则删除表` ta `;

创建表` ta `(

` id ' varchar(255)默认为NULL,

` num ' int(11)默认为空

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

- -

-助教的记录

- -

插入' ta '值(' a ',' 5 ');

插入' ta '值(' b ',' 10 ');

插入' ta '值(' c ',' 15 ');

插入' ta '值(' d ',' 10 ');

- -

-" TB "的表格结构

- -

如果存在“tb ”,则删除表;

创建表“tb ”(

` id ' varchar(255)默认为NULL,

` num ' int(11)默认为空

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

- -

结核病的记录

- -

插入“tb”值(“b”、“5”);

插入“tb”值(“c”,“15”);

插入到“tb”值中(“d”,“20”);

插入到“tb”值中(“e”、“99”);

此时,对应于ta tb的c字段的num是相同的。

sql:

SELECT id,SUM(num) FROM(

SELECT * FROM ta

联合所有

SELECT * FROM tb)作为tmp

按id分组

运行结果:

如果:

SELECT id,SUM(num) FROM(

SELECT * FROM ta

联盟

SELECT * FROM tb)作为tmp

按id分组

运行结果:

使用Union,所有返回的行都是唯一的,就像对整个结果集使用DISTINCT一样。如果多个表的查询结果中有完全一致的数据,mysql会自动复制。

使用Union all,所有行都不会重复,所有行都将被返回。

总结

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • pymysql菜鸟教程,pymysql 使用
  • pymysql菜鸟教程,pymysql 使用,pymysql模块使用简介与示例
  • mysql锁实现,mysql锁算法
  • mysql锁实现,mysql锁算法,MySQL锁机制与用法分析
  • mysql连接报错10061,mysql连接错误10060
  • mysql连接报错10061,mysql连接错误10060,MYSQL无法连接 提示10055错误的解决方法
  • mysql连接报10060错误,mysql连接报错10055
  • mysql连接报10060错误,mysql连接报错10055,MySQL连接异常报10061错误问题解决
  • mysql辅助索引和主键索引,mysql 主键 外键 索引
  • mysql辅助索引和主键索引,mysql 主键 外键 索引,MySQL索引之主键索引
  • MySQL语句大全,mysql常见语句总结
  • MySQL语句大全,mysql常见语句总结,MySQL语句整理及汇总介绍
  • mysql触发器的使用方法实验报告,mysql中触发器的使用
  • 留言与评论(共有 条评论)
       
    验证码: