mysql语法之union
UNION的语法结构:
SELECT ...
UNION [ ALL | DISTINCT ] SELECT ....
[ UNION [ ALL | DISTINCT ] SELECT .....]
UNION 用于将多个SELECT语句中的结果组合到单个结果集中。
1 第一个SELECT语句用的列名称用作返回结果的列名称

其中第一个select中查询的列名为user_name,第二个select中查询的列名为password,但显示的结果列名称只有user_name
在多个select语句中,对应的列应该具有相同的数据类型,如果相应的select猎德数据类型不匹配,则union结果中列的类型和长度会考虑所有的select语句检索的值
UNION DISTINCT 和 UNION ALL
UNION DISTINCT 组合俩个输入,并应用DISTINCT过滤重复的行,一般DISTINCT可以省略,因为UNION默认是删除结果中重复的行。UNION ALL不会删除重复的行,结果包括所有SELECT语句中所有的匹配行
SELECT * FROM T1 WHERE = 10 UNION ALL SELECT * FROM T1 WHERE a = 10;
查询出来的结果会有俩分相同的数据(这里就不做实际例子了)
UNION 中使用 ORDER BY 和 LIMIT
要对单个select语句应用ORDER BY 或 LIMIT ,请将子句放在括号括住的select语句中:
(select a from t1 where a = 10 order by a limit 10)
union
(select * from t2 where a = 11 order by a limit 10);
但要注意的是,ORDER BY 对于单个SELECT 语句的使用并不意味着在最终结果中进行排序,因为UNION默认情况下会生成一组无序的结果集。因此这里要使用ORDER BY 通常会结合LIMIT使用,来确定要取出的行的数量,如果只用了ORDER BY 没有配合使用LIMIT,那么ORDER BY 会被优化掉,因为它不会有任何效果
如果想整个结果集使用ORDER BY 或 LIMIT 进行排序或限制,请将各个SELECT语句括起来并把ORDER BY 或 LIMIT 放在最后:
(select a from t1 where a = 10 )
union
(select a from t2 where a = 11)
order by a limit 10;
但要注意上面的这种情况ORDER BY引用的列名不能包含表名(例如:table_name.col_name)
此外,如果要排序的列是别名,则该ORDER BY子句必须引用别名,而不是列名。以下第一个语句将起作用,但第二个语句将失败并显示 Unknown column 'a' in 'order clause'错误:
(SELECT a AS b FROM t) UNION (SELECT ...) ORDER BY b;
(SELECT a AS b FROM t) UNION (SELECT ...) ORDER BY a;
如果相在整个结果集中对每个SELECT的结果集排序,请在每个SELECT中选择一个附加列用以排序,并ORDER BY在最后添加一下内容:
(SELECT 1 AS sort_col, col1a, col1b, ... FROM t1)
UNION
(SELECT 2 AS sort_col,col2a, col2b, ... FROM t2) ORDER BY sort_col;
要在单个SELECT结果中另外维护排序顺序 ,请在ORDER BY子句中添加辅助列:
(SELECT 1 AS sort_col, col1a, col1b, ... FROM t1)
UNION
(SELECT 2, col2a, col2b, ... FROM t2) ORDER BY sort_col, col1a;
mysql语法之union的更多相关文章
- MySQL 常用语法 之 UNION与UNION ALL
下面讲一下mySql中的union和union all 的功能以及区别 A union B 是将表A的数据和表B的数据连接成一张表,前提是查询的两张表的列数一定要一样否则出错. A union all ...
- 【转】Mysql联合查询union和union all的使用介绍
Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下 一.UNION和UNION ALL的作用和语法 UNION 用于合... ...
- mysql中的union操作(整理)
mysql中的union操作(整理) 一.总结 一句话总结: union两侧的字段数和字段类型要是一样的 union可以接多个 orderby和排序可以在最后的union组合之后 1.union简单实 ...
- MYSQL 语法大全自己总结的
mysql语法大全 --------数据链接---------------------数据库服务启动net start mysql --关闭服务net stop mysql --登录 -u,-p后面不 ...
- 学习mysql语法--基础篇(一)
前 言 mysql mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: 一.创建用户,创建数据库,给 ...
- 学习mysql语法--基础篇(二)
前 言 mysql mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: [SQL语句的组成] DML ...
- mysql语法之case when then与列转行
mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case ...
- mongo 与 传统mysql语法对比
MongoDB语法 MySql语法 db.test.find({'name':'foobar'})<==> select ...
- Mongodb与mysql语法比较
Mongodb与mysql语法比较 mongodb与mysql命令对比 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由 ...
随机推荐
- 【使用篇二】SpringBoot文件上传(5)
一.单个文件上传 1. 在static目录下创建upload.html <!DOCTYPE html> <html> <head> <meta charset ...
- JDOJ 2225 工资计划
JDOJ 2225: 工资计划 https://neooj.com/oldoj/problem.php?id=2225 Description 高考结束后,同学们大都找到了一份临时工作,渴望挣得一些零 ...
- HTTP几种认证方式介绍
HTTP提供了一套标准的身份验证框架:服务器可以用来针对客户端的请求发送质询(challenge),客户端根据质询提供身份验证凭证.质询与应答的工作流程如下:服务器端向客户端返回401(Unautho ...
- 三层交换机RIP动态路由实验
一. 实验目的 1. 掌握三层交换机之间通过RIP协议实现网段互通的配置方法. 2. 理解动态实现方式与静态方式的不同 二. 应用环境 当两台三层交换机级联时,为了保证每台交换机上所连接的 ...
- Educational Codeforces Round 57 (Rated for Div. 2) C 正多边形 + 枚举
https://codeforces.com/contest/1096/problem/C 题意 问是否存在一正多边形内三点构成的角度数为ang,若存在输出最小边数 题解 三点构成的角是个圆周角,假设 ...
- 第02组 Beta冲刺(3/4)
队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...
- 在 Queue 中 poll()和 remove()有什么区别?
remove() ,如果队列为空的时候,则会抛出异常 而poll()只会返回null
- 剑指offer:对称的二叉树
题目描述: 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 思路分析: 二叉树的镜像就是左右相反,对称二叉树即镜像相等.利用一个递归函数 ...
- 调用其他python脚本文件里面的类和方法
问题描述: 自己编写了若干个Python脚本. 在testC.py里面需要调用testA.py和testB.py里面的若干类和方法.要怎么办? 需要都打包.安装,再去调用吗? 其实不必那么麻烦. 这里 ...
- Jenkins集成Sonar Quabe和权限配置
目录 安装Sonar Jenkins配置sonar Maven Jenkins Job配置 Pipeline Jenkins Job配置 Sonar权限管理 Sonar quality Gate通过阈 ...