sql 用union合并合并查询结果

时间:2022-09-28 20:16:28

合并操作与连接相似,因为他们都是将两个表合并起来的另一个表的方法,然而他们的合并方法有本质的区别,

合并是两个表的相加,连接时时两个表的相乘;

01 在合并中两个表原列的数量与数据类型必须相同;在连接中一个表的行可能与另一个表的行有很大的区别,结果表列可能来自第一个表,第二个表或者是两个表的都有;

02在合并中行的最大数量是和 在连接中行的最大数量是积

select name,sex from [user] union select chinese,english from score

使用union all 加上关键字all 功能是不删除重复行也不对进行自动排序加上all 关键字需要计算资源少所以尽可能的使用它 尤其是处理大型表的时候 下列情况应使用union all情况

union加上关键字:

01 知道有重复行但是想保留这些行,

02 知道不可能有重复行,

03 不在乎是否用重复行

select name,address,phone,sex from [user] where age>20 union all select name,address,phone,sex from [user] where sex='男'

Union 中的order by子句

合并表时有且只有一个order by 子句并且必须将它放置语句的末尾 他的两个select 语句都提供了用于合并所有行的排序下面的order by子句可以使用排序依据

01 来自第一个select子句别名

02 来自第一个select子句列别名

3 union 中列的位置编号

前两种更常用、更容易理解。

select name,address,phone,sex from [user] where age>20 union all select name,address,phone,sex from [user] where sex='男'
order by address

union中的自动类型转化:

在合并表的时候两个标源中对应的每个列数据类型必须相同吗 答案是不是的 但是需要数据兼容

首先说文本数据类型 假设合并的两个表源中的第一列数据类型都是文本类型 但长度不一致党合并表时字符长度短的列等于字符长度长的列的不会丢失数据

其次说数值类型当合并两个表源中第一个列数据类型是数值类型的时候但长度不同在合并表的时候所有数字保持所有数字都允许的长度来消除他们数据类型的差别

因为这种都是自动数据类型的转化 所以说任何两个文本都是兼容的 任何数字列都是兼容的

不同类型表的union

当合并的表的时候 两个表源的对应的列即使数据类型也不一定致命 这时候要借助于数据类型转化函数

当合并两个表源相对应的列数据类型不一致一个数值型一个字符型 如果数值型的被转化成为本类型完全可以合并两个表

use student

select 姓名,性别 from student

union

select 学号,str(学期)
from grade

有不同列数的两个表union

当合并两个表源的列数不同 只要向其中一个标源列添加就行了 就可以使得两个表源的列数相同

use student

select 姓名,性别,年龄 from student

union

select 课程代号,课程内容,null from course

三个或者更多的表union

可以把很多数量的表合并起来表的数量可以达到10个之多 然还是要尊徐一定的规则

use student

select 姓名,性别
from student

union

select 课程代号,课程内容
from course

union

select 学号,课程代号 from
grade

sql 用union合并合并查询结果的更多相关文章

  1. SQL使用union合并查询结果(转载)

    1.UNION的作用  UNION 指令的目的是将两个 SQL 语句的结果合并起来.从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION 的一 ...

  2. mysql 中合并查询结果union用法 or、in与union all 的查询效率

    mysql 中合并查询结果union用法 or.in与union all 的查询效率 (2016-05-09 11:18:23) 转载▼ 标签: mysql union or in 分类: mysql ...

  3. SQL SERVER连接、合并查询

    ----创建测试表MyStudentInfoCREATE table MyStudentInfo(  Id int not null primary key,  Name varchar(16),  ...

  4. SQL实现多行合并一行 .

    ORACLE纯SQL实现多行合并一行[转] 项目中遇到一个需求,需要将多行合并为一行.表结构如下:NAME                            Null           Type ...

  5. 在 Apex 中使用合并统计查询

    SOQL 中的合并统计查询 在 SOQL 中,我们可以使用一系列函数来进行合并统计查询.它们的功能和标准 SQL 中的 SUM(),COUNT() 等函数类似. 官方文档 Apex 中使用合并统计查询 ...

  6. (转)SSIS_数据流转换(Union All&合并联接&合并)

    Union All : 与sql语言 Union All 一样,不用排序,上下合并多个表.Union All转换替代合并转换:输入输出无需排序,合并超过两个表 合并联接 : 有左连接.内连接.完全连接 ...

  7. spark sql中进行sechema合并

    spark sql中支持sechema合并的操作. 直接上官方的代码吧. val sqlContext = new org.apache.spark.sql.SQLContext(sc) // sql ...

  8. sql的union用法

    sql中union是很常见的,尤其是创建视图时,完全离不开union. SQL UNION 操作符合并两个或多个 SELECT 语句的结果,UNION 内部的每个 SELECT 语句必须拥有相同数量的 ...

  9. SQL With(递归 CTE 查询)

    本文来自:http://www.cnblogs.com/smailxiaobai/archive/2012/01/16/2323291.html 指定临时命名的结果集,这些结果集称为公用表表达式 (C ...

随机推荐

  1. logback配置详解1

    一:根节点<configuration>包含的属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true. scanPeriod: 设置监测配置文 ...

  2. java 观察者模式

    /** 抽象的观察者 */ public interface Watcher { // status 为 被被观察着传递过来的状态 public void update(String status); ...

  3. 跨域http头

    php:header("Access-Control-Allow-Origin: *"); asp.net:Response.AppendHeader("Access-C ...

  4. web优化规范

    转载自:http://www.tuicool.com/articles/UZR3Az

  5. Oracle数据库十大常见性能问题

    错误的连接管理 oracle的连接是耗时耗力的操作,不应像sqlserver那样使用连接 错误的使用游标和共享池 一般是没有使用绑定变量 不好的SQL语句 使用大量资源的SQL语句都应该好好检查是否可 ...

  6. 通过实例深入理解lec和yacc

    本框架是一个lex/yacc完整的示例,包括详细的注释,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行.大部分框架已经搭好了,你只要稍加扩展就可以 ...

  7. vue中使用sass

    1.npm安装 npm install sass-loader --save-dev npm install node-sass --save-dev //--save写入到package.json里 ...

  8. coocs2d-html5在使用cocoseditor时调用设备的accelerometer来使用重力感应

    在使用大牛touchsnow开发的插件cocoseditor开发游戏时遇到了一些问题,然后就试着解决.近期想试下coocs2d-html5是否能使用重力感应,发现是能够的.只是这个仅仅能在移动真机上測 ...

  9. VC&plus;&plus; 实现修改文件创建、访问、修改时间属性&lpar;转载&rpar;

    转载:http://sunnysab.blog.163.com/blog/static/18037500920134221295425/ struct _FILETIME { //结构体定义 DWOR ...

  10. C&num;退出模式

    1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: 2.Application.Exit();  强制所有消息中 ...