我同事写了一条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, as total_cart, as total_collect, SUM(ipv) ipv, SUM(iuv) iuv FROM tablename WHERE id <= 5 union all SELECT as new_cart, as new_collect,total_cart, total_collect, AS ipv, AS iuv FROM tablename WHERE id = 5
) as t
ORDER BY new_cart desc;

数据表结构:

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

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

录入语句

mysql> insert into tablename values (,,,,,,);
Query OK, row affected (0.00 sec) mysql> insert into tablename values (,,,,,,);
Query OK, row affected (0.00 sec) mysql> insert into tablename values (,,,,,,);
Query OK, row affected (0.00 sec) mysql> insert into tablename values (,,,,,,);
Query OK, row affected (0.00 sec) mysql> insert into tablename values (,,,,,,);
Query OK, row affected (0.00 sec)

执行第一条语句:

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

输出:

+----------+-------------+------------+---------------+------+------+
| new_cart | new_collect | total_cart | total_collect | ipv | iuv |
+----------+-------------+------------+---------------+------+------+
| | | | | | |
| | | | | | |
+----------+-------------+------------+---------------+------+------+
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, as total_cart, as total_collect, SUM(ipv) ipv, SUM(iuv) iuv  FROM tablename WHERE id <=  union all SELECT  as new_cart, as new_collect,total_cart, total_collect,  AS ipv,  AS iuv FROM tablename WHERE id =      ) as t   ORDER BY new_cart desc;
+----------+-------------+------------+---------------+------+------+
| new_cart | new_collect | total_cart | total_collect | ipv | iuv |
+----------+-------------+------------+---------------+------+------+
| | | | | | |
+----------+-------------+------------+---------------+------+------+
row in set (0.00 sec)

Mysql的union的更多相关文章

  1. 【转】mysql的union、left join、 right join、 inner join和视图学习

    1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样.此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all. 例...... 1.联合 ...

  2. MySQL中union和order by一起使用的方法

    MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明.首先看下面的t1表. 1.如果直接用如下sql语句是会报错:Incorrect usage ...

  3. 阳性比例 mysql CASE UNION ALL

    阳性比例 mysql CASE UNION ALL SELECT t.*,t.type_0/all_ FROM ( SELECT FROM_UNIXTIME(create_time,'%Y-%m-%d ...

  4. MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)

    我在一个业务中采用了按月的分表策略,当查询的条件跨月的时候,使用了union all汇总2个表的数据,并按插入时间倒序排列.查询并不复杂,但是当执行的时候却报错了. SELECT * FROM `ta ...

  5. Mysql中Union和OR性能对比

    博客已搬家,更多内容查看https://liangyongrui.github.io/ Mysql中Union和OR性能对比 在leetcode上看到一篇文章,整理一下 参考:https://leet ...

  6. MySQL使用Union创建视图报错

    mysql> select * from test_main; +----+-------+ | id | value | +----+-------+ |  1 | ONE   | |  2  ...

  7. MySQL中UNION和UNION ALL的使用

    在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后 ...

  8. mysql中UNION ALL用法

    MYSQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果. 举例说明: select * from table1 u ...

  9. Mysql下Union注入Bypass安全狗过程

    文章转载于:http://www.0aa.me/index.php/archives/95/ 一次众测发现个注入,然后有安全狗就顺带看了下安全狗. 先fuzz看看安全狗拦截什么关键词union sel ...

随机推荐

  1. Git:配置

    概念 一般在新的系统上,我们都需要先配置下自己的Git 工作环境.配置工作只需一次,以后升级时还会沿用现在的配置.当然,如果需要,你随时可以用相同的命令修改已有的配置. Git 提供了一个叫做git ...

  2. python笔记34-类里面的__str__ 和__unicode__作用

    前言 最近学django,看到不少教程里面models.py里面建表,写一个类的时候,习惯上加个__str__ ,开始不太明白,简单的实践后才知道是为了美化类实例的打印内容. python3 里面用_ ...

  3. Linux学习19-gitlab配置邮箱postfix(新用户激活邮件)

    前言 gitlab新增新用户有两种方式,第一种可以用户主动注册(自己设置密码):第二种也可以通过root管理员用户直接添加用户,发个邮件到用户的邮箱里,收到邮件后激活. 如果是第二种方式添加新用户的话 ...

  4. 如何用 Java 实现 Web 应用中的定时任务?

    定时任务,是指定一个未来的时间范围执行一定任务的功能.在当前WEB应用中,多数应用都具备任务调度功能,针对不同的语音,不同的操作系统, 都有其自己的语法及解决方案,windows操作系统把它叫做任务计 ...

  5. HttpContext.Current.Session 和 Session 的区别

    Session(会话)通常指一个动作从开始到结束不间断的一个动作. 例如“打电话”,通常是“1.拿起电话--2.拨对方号码--3.对方截图--4.挂机”.这四个步骤从完成到结束组成了一个基本的Sess ...

  6. Android 应用程序之间内容分享详解(二)

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9428613 Android 应用程序之间内容分享详解(一) 之前给大家分享了你开发的应 ...

  7. FIR滤波原理及verilog设计

    FIR(Finite Impulse Response)Filter:有限冲激响应滤波器,又称为非递归线性滤波器. FIR滤波器的冲击响应是一个值为滤波器抽头系数的采样序列,其脉冲响应由有限个采样值构 ...

  8. Decode Ways leetcode java

    题目: A message containing letters from A-Z is being encoded to numbers using the following mapping: ' ...

  9. eclipse library jar包 使用总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  10. UML图中聚合、组合、关联、依赖、泛化的强弱关系

    一.泛化 1.说明 泛化是一种继承关系,如果一个类A的所有属性和操作能被另一个类B所继承,则类B不仅可以包含自己独有的属性,而且可以包含类A的属性和操作.继承是类与类或者类与接口之间最常见的关系. 2 ...