SQL连接两张相同或不同的表,使用 UNION 和 UNION ALL 操作符
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 操作符相关推荐
- mysql比对表中数据是否相同_如何用sql比较两张表数据是否一致?
在批量程序的测试中,经常会涉及到对数据库表的测试,今天我们来介绍一下用sql比较两张表结构相同的表数据是否完全一致的方法. 1.inner join 浅尝 提到比对两张表的数据是否完全相同,很容易想到 ...
- postgresql中连接两张表更新第三张表(updata)
目录 前言 准备数据库和表 表1 表2 最终员工表 SQL语句 扩展:with语句 前言 在工作中可能会遇到需要结合两张表的数据来添加到第三张表,或者说是第三张表数据有误,需要覆盖更新,本章通过举例来 ...
- SQL 将两张包含相同字段和不同字段的表数据合并成一张表
此为SQL案例:将两张具备相同字段,有一部分字段不相同的两张表获取查询结果为整合之后的. 两张表 table1 table2 我想要将两者的数据进行合并达到如下的效果: 这里限制条件有两个分别是dat ...
- mysql 左连接两张表_mysql左连接右连接(查询两张表不同的数据)
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 : right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录: inner join(等值连 ...
- sql查询两张表的并集union和union all
使用 union all 和 union 1.新建两张表:student.teacher //学生表 create table student( id int primary key, name va ...
- 计算机sql查询同行并集,sql查询两张表的并集union和union all
使用 union all 和 union 1.新建两张表:student.teacher //学生表 create table student( id int primary key, name va ...
- sql实现两张表的拷贝
个人资源与分享网站:http://xiaocaoshare.com/ 1.需求 将commoditys表的数据拷贝到tbl_commodity commoditys表的结构如下: tbl_commod ...
- java mysql连接两张表,如何使用Java和MySQL在一个语句中插入两个不同的表?
I am using Java, Spring (NamedParameterJdbcTemplate) and MySQL. My statement looks like this: INSERT ...
- sql比较两张表,获取与不一样的数据
select * from excel_data a where not exists(select * from base_user b where a.account_number=b.usern ...
最新文章
- ***测试技巧总结更新篇3
- What is Gameplay
- python3-Python3 数字(Number)
- vuewebsocket做消息提醒_企业微信群怎么定时群发消息?如何突破群发次数限制?...
- mongodb数据库中插入数据
- pyqt5 qscrollarea到达_pyqt5 QScrollArea设置在自定义侧(任何位置)
- Bootstrap 聚合
- 10进制小数转化为任意进制小数
- python周期执行-用Python执行周期性动作
- View Horizon Mirage安装手册(三)——Mirage Management安装
- python读取grd数据_一个关于grads显示grd格式数据的问题。
- 关于网易新游猫和老鼠我的吐槽:来啊,一起来虐猫啊
- c#获取百度服务器时间
- 网络攻防原理及应用 知识梳理
- python画微信表情_python画微信表情符的实例代码
- 工作中常用的Linux命令(持续更新)
- C++ 调用 .lib 文件中的函数
- 【转载】常用虚拟机软件推荐
- 4.服务器如何防止信息泄露,怎样防止共享文件信息泄露
- OFDM系统Simulink仿真,包括RS编译码,16qam,循环前缀,导频插入,串并并串等模块
热门文章
- 快捷键 鼠标滚轮与触控板翻转 mac
- [230601]托福听力精听|TPO66L1|Sleep
- poj1873The Fortified Forest
- 拿python写个小提琴演奏评分系统一些有意思的想法.py文件转变为.exe可执行文件
- HTTPS的通俗理解(加密、数字签名、数字证书)
- linux 配置远程gnome,debian下安装gnome桌面和用vnc远程访问
- js获取摄像头中的视频流并上传到后台
- 软件性能测试分析与调优实践之路-性能分析调优思想与调优技术总结
- Mac移动硬盘不正确卸载造成不识别解决方法
- Selenium 安装