Fork me on GitHub

The difference between Union & Union All in SQL Server/pOSTGRESQL

Following is test in SQL Server:

复制代码
USE [TestDB]
CREATE TABLE [dbo].[UserInfoTest02](
    [number] [bigint] NOT NULL,
    [name] [varchar](20) NOT NULL,
    [age] [int] NOT NULL,
    [sex] [bit] NOT NULL,
    [address] [varchar](200) NULL
)

CREATE TABLE [dbo].[UserInfoTest03](
    [number] [bigint] NOT NULL,
    [name] [varchar](20) NOT NULL,
    [age] [int] NOT NULL,
    [sex] [bit] NOT NULL,
    [address] [varchar](200) NULL
)

CREATE TABLE [dbo].[UserInfoTest04](
    [SID] [bigint] NOT NULL,
    [name] [varchar](20) NOT NULL,
    [age] [int] NOT NULL,
    [sex] [bit] NOT NULL,
    [address] [varchar](200) NULL
)

Insert into UserInfoTest02
(number,name,age,sex,address)
Values
(1, 'A',12,0,'A'),
(2, 'B',12,0,'A')

Insert into UserInfoTest03
(number,name,age,sex,address)
Values
(1, 'A',12,0,'A'),
(2, 'B',12,0,'BB')

Insert into UserInfoTest04
(SID,name,age,sex,address)
Values
(1, 'A',12,0,'A'),
(2, 'B',12,0,'BB')

SELECT SID, name,age,sex,address 
FROM UserInfoTest04
UNION ALL
SELECT number,name,age,sex,address
FROM UserInfoTest02

--Test Result1

SID    name    age    sex    address
1    A    12    0    A
2    B    12    0    BB
1    A    12    0    A
2    B    12    0    A
SELECT SID, name,age,sex,address 
FROM UserInfoTest04
UNION
SELECT number,name,age,sex,address
FROM UserInfoTest02

--Test Result2

SID    name    age    sex    address
1    A    12    0    A
2    B    12    0    A
2    B    12    0    BB

SELECT number, name,age,sex,address 
FROM UserInfoTest03
UNION
SELECT number,name,age,sex,address
FROM UserInfoTest02

--Test Result3

number    name    age    sex    address
1    A    12    0    A
2    B    12    0    A
2    B    12    0    BB

复制代码

Test in Postgresql:

复制代码
INSERT INTO "Test01"("SID", "Name") VALUES (1, 'A');
INSERT INTO "Test01"("SID", "Name") VALUES (2, 'B');
INSERT INTO "Test01"("SID", "Name") VALUES (3, 'C');

INSERT INTO "Test02"("SID", "Name") VALUES (1, 'A');
INSERT INTO "Test02"("SID", "Name") VALUES (2, 'B');

INSERT INTO "Test03"("Number", "address") VALUES(1, 'A');
INSERT INTO "Test03"("Number", "address") VALUES(2, 'B');
SELECT "SID", "Name" FROM "Test01"
UNION ALL
SELECT "SID", "Name" FROM "Test02";

--Test Result1:

1;"A"
2;"B"
3;"C"
1;"A"
2;"B"

SELECT "SID", "Name" FROM "Test01"
UNION
SELECT "Number", "address" FROM "Test03";

--Test Result2:

2;"B"
1;"A"
3;"C"

复制代码
posted @   种花生的读书人  阅读(247)  评论(0)    收藏  举报
编辑推荐:
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
阅读排行:
· 7 个最近很火的开源项目「GitHub 热点速览」
· DeepSeekV3:写代码很强了
· 记一次 .NET某固高运动卡测试 卡慢分析
· Visual Studio 2022 v17.13新版发布:强化稳定性和安全,助力 .NET 开发提
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
历史上的今天:
2013-10-19 XAML系列学习
2013-10-19 C#实现大数字的运算

该博客仅作为记录笔记,转载随意

点击右上角即可分享
微信分享提示