SQL UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同

SQL UNION 语法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SQL UNION ALL 语法

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

上面概念解释清楚了。接下来说一下我的实际应用场景,我是需要把两个不同的表合并成一张表

我的思路是,确定一下最后需要返回的字段,以一张表为主体,另一张表的字段重命名去重合,这样就可以合并出想要的结果

但是问题又来了,因为我不只需要合并数据,我还要进行动态的条件过滤和分页,直接使用sql语句去做,不太好实现也不方便维护,我想到了一个比较简单的方法,就是把这个sql做成视图,这样我就不用担心条件过滤和分页了。因为我需要很频繁的查询,所以做成视图是比较好的办法,如果大家有其他比较好的想法,也可以留言。

下面晒一下我的最后效果,运行之后原本的11条加7条,就变成了18条了:

-- View: public."V_UNION"-- DROP VIEW public."V_UNION";CREATE OR REPLACE VIEW public."V_UNION" AS SELECT s."ID",s."CATALOGID",s."NAME",s."TITLE",s."INTRODUCTION",s."KEYWORD",s."VERSION",s."CLASSIFY",   FROM "TEST1" s
UNION ALLSELECT r."ID",r."CATALOGID",r."NAME",r."TITLE",r."INTRODUCTION",r."INTRODUCTION" AS "KEYWORD",r."INTRODUCTION" AS "VERSION",r."CLASSIFY",FROM "TEST2" rWHERE (r."CATALOGID" IN ( SELECT "CATALOG"."ID"FROM "CATALOG"WHERE "CATALOG"."PARENTID" in ('4', '5')));ALTER TABLE public."V_UNION"OWNER TO postgres;
COMMENT ON VIEW public."V_UNION"IS '合并';

上面的sql示例中,第一个查询是不带条件,第二个是过滤指定的条件然后在合并的,构成我想要的合并结果之后,我后面的业务需求是对这些数据进行过滤,搜索,这个时候就比较简单了,就跟直接操作数据表一样,用select * from "V_UNION" where ...语句进去对应的过滤,分页。好了今天的分享就到这里,坚持每天记录一个用到的知识点!!

SQL连接两张相同或不同的表,使用 UNION 和 UNION ALL 操作符相关推荐

  1. mysql比对表中数据是否相同_如何用sql比较两张表数据是否一致?

    在批量程序的测试中,经常会涉及到对数据库表的测试,今天我们来介绍一下用sql比较两张表结构相同的表数据是否完全一致的方法. 1.inner join 浅尝 提到比对两张表的数据是否完全相同,很容易想到 ...

  2. postgresql中连接两张表更新第三张表(updata)

    目录 前言 准备数据库和表 表1 表2 最终员工表 SQL语句 扩展:with语句 前言 在工作中可能会遇到需要结合两张表的数据来添加到第三张表,或者说是第三张表数据有误,需要覆盖更新,本章通过举例来 ...

  3. SQL 将两张包含相同字段和不同字段的表数据合并成一张表

    此为SQL案例:将两张具备相同字段,有一部分字段不相同的两张表获取查询结果为整合之后的. 两张表 table1 table2 我想要将两者的数据进行合并达到如下的效果: 这里限制条件有两个分别是dat ...

  4. mysql 左连接两张表_mysql左连接右连接(查询两张表不同的数据)

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 : right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录: inner join(等值连 ...

  5. sql查询两张表的并集union和union all

    使用 union all 和 union 1.新建两张表:student.teacher //学生表 create table student( id int primary key, name va ...

  6. 计算机sql查询同行并集,sql查询两张表的并集union和union all

    使用 union all 和 union 1.新建两张表:student.teacher //学生表 create table student( id int primary key, name va ...

  7. sql实现两张表的拷贝

    个人资源与分享网站:http://xiaocaoshare.com/ 1.需求 将commoditys表的数据拷贝到tbl_commodity commoditys表的结构如下: tbl_commod ...

  8. java mysql连接两张表,如何使用Java和MySQL在一个语句中插入两个不同的表?

    I am using Java, Spring (NamedParameterJdbcTemplate) and MySQL. My statement looks like this: INSERT ...

  9. sql比较两张表,获取与不一样的数据

    select * from excel_data a where not exists(select * from base_user b where a.account_number=b.usern ...

最新文章

  1. ***测试技巧总结更新篇3
  2. What is Gameplay
  3. python3-Python3 数字(Number)
  4. vuewebsocket做消息提醒_企业微信群怎么定时群发消息?如何突破群发次数限制?...
  5. mongodb数据库中插入数据
  6. pyqt5 qscrollarea到达_pyqt5 QScrollArea设置在自定义侧(任何位置)
  7. Bootstrap 聚合
  8. 10进制小数转化为任意进制小数
  9. python周期执行-用Python执行周期性动作
  10. View Horizon Mirage安装手册(三)——Mirage Management安装
  11. python读取grd数据_一个关于grads显示grd格式数据的问题。
  12. 关于网易新游猫和老鼠我的吐槽:来啊,一起来虐猫啊
  13. c#获取百度服务器时间
  14. 网络攻防原理及应用 知识梳理
  15. python画微信表情_python画微信表情符的实例代码
  16. 工作中常用的Linux命令(持续更新)
  17. C++ 调用 .lib 文件中的函数
  18. 【转载】常用虚拟机软件推荐
  19. 4.服务器如何防止信息泄露,怎样防止共享文件信息泄露
  20. OFDM系统Simulink仿真,包括RS编译码,16qam,循环前缀,导频插入,串并并串等模块

热门文章

  1. 快捷键 鼠标滚轮与触控板翻转 mac
  2. [230601]托福听力精听|TPO66L1|Sleep
  3. poj1873The Fortified Forest
  4. 拿python写个小提琴演奏评分系统一些有意思的想法.py文件转变为.exe可执行文件
  5. HTTPS的通俗理解(加密、数字签名、数字证书)
  6. linux 配置远程gnome,debian下安装gnome桌面和用vnc远程访问
  7. js获取摄像头中的视频流并上传到后台
  8. 软件性能测试分析与调优实践之路-性能分析调优思想与调优技术总结
  9. Mac移动硬盘不正确卸载造成不识别解决方法
  10. Selenium 安装