Mysql的union

摘要:
我同事写了一条Sql语句,当时没看明白,下面晒出来:SELECTSUM(new_cart)asnew_cart,SUM(new_collect)asnew_collect,SUM(total_cart)astotal_cart,SUM(total_collect)astotal_collect,SUM(ipv)ipv,SUM(iuv)iuvFROM(SELECTSUM(new_cart)asnew

我同事写了一条Sql语句,当时没看明白,下面晒出来:

SELECT SUM(new_cart) as new_cart,SUM(new_collect) as new_collect, SUM(total_cart) as total_cart, SUM(total_collect) as total_collect, SUM(ipv) ipv, SUM(iuv) iuv FROM 
( SELECT SUM(new_cart) as new_cart,SUM(new_collect) as new_collect,0 as total_cart,0 as total_collect, SUM(ipv) ipv, SUM(iuv) iuv FROM tablename WHERE id <= 5 union all SELECT 0 as new_cart,0 as new_collect,total_cart, total_collect, 0 AS ipv, 0 AS iuv FROM tablename WHERE id = 5
) as t
ORDER BY new_cart desc;

数据表结构:

CREATE TABLE `tablename` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `new_cart` bigint(20) DEFAULT NULL,
  `new_collect` bigint(20) DEFAULT NULL,
  `total_cart` bigint(20) DEFAULT NULL ,
  `total_collect` bigint(20) DEFAULT NULL ,
  `ipv` bigint(20) DEFAULT NULL ,
  `iuv` bigint(20) DEFAULT NULL ,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

那么其实是使用了MYSQL的UNION。UNION:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

录入语句

mysql> insert into tablename values (1,1,1,1,1,1,1);
Query OK, 1 row affected (0.00sec)
mysql> insert into tablename values (2,2,2,2,2,2,2);
Query OK, 1 row affected (0.00sec)
mysql> insert into tablename values (3,3,3,3,3,3,3);
Query OK, 1 row affected (0.00sec)
mysql> insert into tablename values (4,4,4,4,4,4,4);
Query OK, 1 row affected (0.00sec)
mysql> insert into tablename values (5,5,5,5,5,5,5);
Query OK, 1 row affected (0.00 sec)

执行第一条语句:

SELECT SUM(new_cart) as new_cart,SUM(new_collect) as new_collect,0 as total_cart,0 as total_collect, SUM(ipv) ipv, SUM(iuv) iuv  FROM tablename WHERE id <= 5 union all SELECT 0 as new_cart,0 as new_collect,total_cart, total_collect, 0 AS ipv, 0 AS iuv FROM tablename WHERE id = 5;

输出:

+----------+-------------+------------+---------------+------+------+
| new_cart | new_collect | total_cart | total_collect | ipv  | iuv  |
+----------+-------------+------------+---------------+------+------+
|       15 |          15 |          0 |             0 |   15 |   15 |
|        0 |           0 |          5 |             5 |    0 |    0 |
+----------+-------------+------------+---------------+------+------+
2 rows in set (0.00 sec)

可见,union是把两条记录合并输出出来,那么再将这些内容相加输出该怎么办哪?聪明的你一定想到了第一条数据语句了吧~

mysql> SELECT SUM(new_cart) as new_cart,SUM(new_collect) as new_collect, SUM(total_cart) as total_cart, SUM(total_collect) as total_collect, SUM(ipv) ipv, SUM(iuv) iuv FROM      ( SELECT SUM(new_cart) as new_cart,SUM(new_collect) as new_collect,0 as total_cart,0 as total_collect, SUM(ipv) ipv, SUM(iuv) iuv  FROM tablename WHERE id <= 5 union all SELECT 0 as new_cart,0 as new_collect,total_cart, total_collect, 0 AS ipv, 0 AS iuv FROM tablename WHERE id = 5     ) ast   ORDER BY new_cart desc;
+----------+-------------+------------+---------------+------+------+
| new_cart | new_collect | total_cart | total_collect | ipv  | iuv  |
+----------+-------------+------------+---------------+------+------+
|       15 |          15 |          5 |             5 |   15 |   15 |
+----------+-------------+------------+---------------+------+------+
1 row in set (0.00 sec)

免责声明:文章转载自《Mysql的union》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java中的TCP SERVER代码table 隐藏某一个td时,显示错乱问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL通过自定义函数以及存储过程实现递归查询父级ID

1.存储过程定义  存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译 2.为什么用存储过程实现树结构数据查询父级节点  1、能完成较复杂的运算与判断    2、可编程行强,灵活    3、SQL编程的代码可重复使用    4、预编译机制    5、减少...

MySQL 千万 级数据量根据(索引)优化 查询 速度

一、索引的作用索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经让人难以忍受了。 提升查询速度的方向一是提升硬件(内存、cpu、硬盘),二是在软件上优化(加索引、优化sql;优化sql不在本文阐述范围之内)。 能在软件上解决的...

CentOS 7 64位

1.查看Ip: ip addr 以前记得使用的是 ifconfig       这里提示没有发现命令      使用 ip addr 出现了上边的结果。系统刚刚在虚拟机中装好,所以显示的是上边的结果。但是出现了ip: 127.0.0.1 2.修改ip配置,联网 vi /etc/sysconfig/network-scripts/ifcfg-e...

MySQL导入、导出、数据库定时备份

  本篇使用的MySQL版本是5.7.30,注意不同版本之间可能会有差异。   一、导出操作   1、查找mysqldump命令位置 which mysqldump   2、mysqldump导出示例   用户名和密码分别是root和123456;导出远程库,使用-h+IP和-port+端口,如下所示。后面的命令默认导出本地库。 /usr/bin/mysq...

MySQL性能优化总结

一、MySQL的主要适用场景 1、Web网站系统 2、日志记录系统 3、数据仓库系统 4、嵌入式系统 二、MySQL架构图: 三、MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI...

如何将Excel导入到Mysql数据库中

1.在mysql中建一张和Excel结构一样的表,或者修改excel信息,将excel的结构与mysql中table保持一致,包括字段名称。 2.利用mysql客户端工具navicat进行导入。 步骤: 1.在数据库中找到表,右键,点击“导入导出”  2.根据你要导入的文件类型,选择相关选项,然后下一步 3.选择excel文件存放位置,然后,选择里边的...