Union:联合
作用:把2次或多次查询结果合并起来
案例(认识union):我想把商品价格大于5000元的和商品价格小于20元的商品都取出来
1.Select * from goods where shop_price < 20 or shop_price >5000;
2.我们用union将他们合并就是
Select * from goods where shop_price < 20
Select * from goods where shop_price > 5000
然后用个union将他们联合一下就行了
Select * from goods where shop_price < 20 union Select * from goods where shop_price > 5000;
 
Union的语法要求:
两次查询的列数一致
推荐:最好查询的每一列,相对应的列类型也一样。
 
可以来自于多张表
多次sql语句取出的列名可以不一致,此时以第1个sql的列名为准。
 
面试题:
有两张表
1张为
Ta
 
Id num
a   5
b  10
c  15
d  10
 
 
Tb
 
Id    num
b     5
c    10
d    20
e    99
 
想得到的结果
a,5
b,15
c,25
d,30
e,99
 
select id,sum(num) from (select * from ta union select * from tb) as tmp group by id;
 
如果不同的语句中取出的行,有完全相同(即每个列的值都相同,例上例中我把tb表的C的值也改为15,那就和ta表完全相同了),那么相同的行将会合并(即去重复)。
 
如果不去重复,可以加all来指定。
select * from ta union all select * from tb;
同理,我想完成上一题,现在我的C的值是15了,而不是10
Ta
 
Id num
a,  5
b,  10
c,  15
d,  10
 
 
Tb
 
Id   num
b    5
c    15
d    20
e    99
 
这个时候语句就是这样,在union后面加个all就行了
select id,sum(num) from (select * from ta union all select * from tb) as tmp group by id;
现在一个新题目:
想取出第4栏目的商品,价格降序排列,还想取出第5个栏目的商品,价格也降序排列,用union完成。
(select goods_id,cat_id,goods_name,shop_price from goods where cat_id = ) union (select goods_id,cat_id,goods-name,shop_price from goods where cat_id = ) order by shop_price;
如果子句中有order by,limit,需加小括号()括起来,推荐放到所有子句之后,即对最终合并后的结果来排序。
 
取第3个栏目价格前3高的商品和第4个栏目价格前2高的商品,用union来实现
(select goods_id,cat_id,goods_name,shop_price from goods where cat_id =  order by shop_price desc limit )union(select goods_id,cat_id,goods_name,shop_price from goods where cat_id =  order by shop_price desc limit );
在子句中,order by 配合limit使用才有意义,如果order by 不配合limit使用,会被语法分析器优化分析时,去除。

七、union联合的更多相关文章

  1. [办公自动化] 再读《让EXCEL飞》(从excel导入access数据时,union联合查询,数据源中没有包含可见的表格)

    一年多以前就买了@Mrexcel的<让excel飞>这本书.整体思路是利用access结合excel,大幅度提高数据分析效率. 最近又拿出来看了看.第十五章,比高级筛选更“高级”,P241 ...

  2. laravel4.2 union联合,join关联分组查询最新记录时,查询条件不对,解决方案

    需求: 分组联合查询,或者最新记录. 问题:  mysql分组的时候默认会查询第一条记录,存在gourp by时 order by 无效. 一般解决办法就是 ,select * from ( sele ...

  3. SqlSever基础 union 联合查询,厉害的并集 重复项只显示一个 两个查询结果并在一起后排序

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  4. [C语言 - 12] Union联合

    union Student {   int age;   char *name; } stu;   union只按照最长的数据成员分配控件,适用于有N个数据不会同时出现的情况,用以压缩空间.

  5. VBA+SQL transform pivot union联合查询的基础应用

    Sub 项目状态查询() '如果“项目状态”是未转运营那么实施状态是不能选择的,因为还没有实施.'如果“项目状态”选择状态后,那么项目名称里面只显示该状态的项目名称.如果“项目状态”选择的不是未转运营 ...

  6. 【转】Mysql联合查询union和union all的使用介绍

    Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下 一.UNION和UNION ALL的作用和语法 UNION 用于合... ...

  7. 结构体struct 与 联合union

    1.C语言中的结构体 1.1 定义 结构体是由一系列相同或不同类型的变量组成的集合. struct 结构体名{               //struct为关键字,“结构体名”为用户定义的类型标识. ...

  8. Mysql联合查询UNION和UNION ALL的使用介绍

    UNION和UNION ALL的作用和语法 UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行.UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相 ...

  9. MySQL进阶 9: 联合查询 - 查询语句1 union 查询语句2 union ...

    #进阶 : 联合查询 /* union 联合 合并: 将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union ... 应用语境: 要查询的结果来自多个表,但查询的列 ...

随机推荐

  1. spark-shell 中rdd常用方法

    centos 7.2     spark 2.3.3      scala 2.11.11    java 1.8.0_202-ea spark-shell中为scala语法格式 1.distinct ...

  2. scrapy 爬取视频

    利用FilesPipeline 下载视频 1.setting.py # 保存log信息的文件名 LOG_LEVEL = "INFO" # LOG_STDOUT = True # L ...

  3. 有缓存区的管道channel

    package main import ( "fmt" "time" ) func main() { //创建一个有缓存区的管道 ch := make(chan ...

  4. ESP8266 LUA脚本语言开发: 外设篇-GPIO输出高低电平

    前言 所有的LUA开发API参考 https://nodemcu.readthedocs.io/en/master/en/modules/gpio/ 原理图 让GPIO2输出高电平只需 gpio.mo ...

  5. 面向对象软件构造 (Bertrand Meyer 著)

    Part A: The Issues 议题 第一章 软件品质 第二章 面向对象的标准 Part B: The Road To Object Orientation 通向面向对象之路 第三章 模块性 第 ...

  6. docker Dockerfile实战

    目录 Dockerfile实战 基础pm2 Dockerfile keymetrics/pm2:8-alpine keymetrics/pm2:12-alpine pm2 node Dockerfil ...

  7. (三十四)golang--接口

    golang的多态特性主要体现在接口上: 主要优势:高内聚低耦合: package main import ( "fmt" ) type usb interface { start ...

  8. Spring的工具类StringUtils使用

    我们经常会对字符串进行操作,spring已经实现了常用的处理功能.我们可以使用org.springframework.util.StringUtils 工具类帮我们处理字符串. 工具类整理如下:   ...

  9. flink 注册函数示例

    需求 (filter): 现在有这么一个需求,统计出现在纽约的行车记录.这里我们需要进行一个过滤的操作,我们需要有个自定义的 UDF ,具体思路是,表里面有经度和维度这两个字段,通过这个可以来开发一个 ...

  10. 解决Chrome插件安装时程序包无效【CRX_HEADER_INVALID】的错误

    将[.crx]后缀的文件拖拽至谷歌浏览器开发者模式下的扩展程序管理页签时,报错[CRX_HEADER_INVALID],即此插件无效的错误. 安装失败的原因 原因在于谷歌浏览器在新版本中添加对第三方插 ...