union和union all的区别
UNION 写一篇
联合查询(把前后两个表的查询结果集合在前表中)
首先有个为什么需要 相同记录数?? 记错了。应该是union两张表的查询字段数目要一致,字段类型要相似
相同的数据类型,至少是相似,可转化的。
UNION 和 UNION ALL 的区别:前者会自动剔除掉后表相同的数据,从而得到的结果集没有重复数据,
而 UNION ALL 会把所有数据都查询出来,包括重复的数据。
测试脚本:
USE [test]
GO /****** Object: Table [dbo].[my] Script Date: 11/25/2015 08:57:54 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE TABLE [dbo].[my](
[id] [int] NOT NULL,
[num] [int] IDENTITY(0,1) NOT NULL,
[dnum] [int] NOT NULL,
[name] [nchar](10) NULL,
[col] [int] NULL,
CONSTRAINT [PK_my] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO ALTER TABLE [dbo].[my] ADD CONSTRAINT [DF_my_dnum] DEFAULT ((11)) FOR [dnum]
GO
--union
SELECT id from test union select id from my; id
1
2
3
4
7
8 --UNION ALL
SELECT id from test union all select id from my; id
1
2
3
1
3
4
7
8
疑问:1. 按理来说前表的结果应该全部能查出来,但是有人提出union后的记录数会少于前表,有可能吗?
2.union的使用场景:应该是两个相似的表,并且要合并结果集。
案例:

解答思路:这里肯定要使用到group by 进行分组,但是主表和副表的表结构不一致,这个时候需要使用常量处理,然后用union去合并记录,从而生成需要的新表。
CREATE TABLE TT(
ID INT ,
A INT,
B INT
)
CREATE TABLE TA(
ID INT ,
A INT,
B INT,
C INT,
D INT,
E INT,
F INT
)
INSERT INTO TT VALUES (1,15,1);
INSERT INTO TT VALUES (1,15,2);
INSERT INTO TT VALUES (1,15,3);
INSERT INTO TT VALUES (1,15,4);
INSERT INTO TT VALUES (2,15,1);
INSERT INTO TT VALUES (2,15,2);
INSERT INTO TT VALUES (2,15,3);
INSERT INTO TT VALUES (2,15,1); INSERT INTO TA VALUES (1,15,1,1,550,780,220);
INSERT INTO TA VALUES (1,15,2,2,550,380,220);
INSERT INTO TA VALUES (1,15,3,3,550,580,220);
INSERT INTO TA VALUES (1,15,1,4,550,700,200);
INSERT INTO TA VALUES (1,15,2,5,500,780,220);
INSERT INTO TA VALUES (1,15,3,6,550,780,100);
INSERT INTO TA VALUES (1,15,4,7,500,480,220);
INSERT INTO TA VALUES (1,15,1,8,550,600,100); SELECT
* INTO TN
FROM (SELECT
T1.AID,
T1.A,
T1.B,
SUM(T1.C1) AS C_C1,
SUM(T1.D1) AS C_D1,
SUM(T1.E1) AS C_E1,
SUM(T1.F1) AS C_F1
FROM ((SELECT
ID AS AID,
A,
B,
0 AS C1,
0 AS D1,
0 AS E1,
0 AS F1
FROM TT) UNION (SELECT
AID,
A,
B,
SUM(C) AS C1,
SUM(D) AS D1,
SUM(E) AS E1,
SUM(F) AS F1
FROM TA
GROUP BY AID,
A,
B))
AS T1
GROUP BY T1.AID,
T1.A,
T1.B)
T
union和union all的区别的更多相关文章
- Union和Union All到底有什么区别
以前一直不知道Union和Union All到底有什么区别,今天来好好的研究一下,网上查到的结果是下面这个样子,可是还是不是很理解,下面将自己亲自验证: Union:对两个结果集进行并集操作,不包括重 ...
- Oracle之Union与Union all的区别
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并在一起显示出来. union和unio ...
- union与union all的区别
首先说下union与join的区别 1.union是以行增加的方式,进行连接:join是以列增加的方式进行连接: 2.union连接查询的两个表的字段必须要一一对应,数目相等:join则没有要求,但是 ...
- C和C++中结构体(struct)、联合体(union)、枚举(enum)的区别
C++对C语言的结构.联合.枚举 这3种数据类型进行了扩展. 1.C++定义的结构名.联合名.枚举名 都是 类型名,可以直接用于变量的声明或定义.即在C++中定义变量时不必在结构名.联合名.枚举名 前 ...
- Ms SQLServer中的Union和Union All的使用方法和区别
Ms SQLServer中的Union和Union All的使用方法和区别 SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 ...
- union与union all 的区别
Union与Union All的区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并 ...
- Union 与 Union all 区别
原创,请园长不要删 Sql查询统计时,很多时候用到了union 和 union all,union与union all的区别就是联合查询的时候union会去重,union all不会去重.本人用uni ...
- SQL Server函数---Union与Union All的区别
SQL Server函数---Union与Union All的区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称 ...
- Oracle中Union与Union All的区别(适用多个数据库)
Oracle中Union与Union All的区别(适用多个数据库) 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或 ...
随机推荐
- Eclipse/JavaWeb (一)三大框架之struts框架 持续更新中...
最近主要把javaweb的三大框架过一遍. (一)发展历史 传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使得程序分为几层,有 ...
- js地区转盘抽奖插件
<script type="text/javascript"> var colors = ["#B8D430", "#3AB745&quo ...
- jquery.extend方法
jquery.extend()用来扩展jquery中方法,实现插件. 1.jQuery.extend函数详细用法! 扩展jQuery静态方法. 1$.extend({ 2test:function() ...
- C#常用操作类库一(验证类)
public class Validator { #region 验证输入字符串为数字 /// <summary> /// 验证输入字符串 ...
- c++ sort降序排序
sort是c++ STL中提供的一个函数模板,可以用来对多种类型进行排序. 默认是升序排序.它有两种使用方法: default (1) template <class RandomAccessI ...
- <转>Win7系统下利用U盘安装Ubuntu_12.04实现双系统教程
目前网上流传的关于Linux 系统的安装教程可是说是五彩缤纷,之前想采用硬盘安装方式,由于配置问题未能正确安装,现研究了下U盘安装,根据互联网上的一些资料及自己的总结,在Windows7 系统下采用U ...
- Entity Framework search sequnce
sql express, then (LocalDb)\v11.0 (LocalDb)\mssqllocaldb sqllocaldb i could list all the local db i ...
- Centos 6.7 安装smokeping (最完整教程)
本教程需要的源码包一并上传了,届时可以直接上传到linux系统里面! 需要编译的fping.echoping.smokeping源码包,链接:http://pan.baidu.com/s/1pL4HL ...
- window.onload用法详解:
网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式: 一.将脚本代码放在网页的底端,这样在运行脚本代 ...
- Monkey环境搭建
一.Monkey 1)Monkey是什么? Monkey是SDK中附带的一个工具.是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏 ...