我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 两张表数据合并的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 两张表数据合并的实现

有一个需求, 需要从数据库中导出两张表的数据到同一个excel中

鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据.

数据涉及到三张表

CREATE TABLE `bigdata_qiye` (
  `id` bigint(64) NOT NULL COMMENT '主键',
  `tenant_id` varchar(12) DEFAULT '000000' COMMENT '租户ID',
  `registration_type` int(2) DEFAULT NULL COMMENT '注册类型(1.国有,2.民营,3.外资)',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `bigdata_qiye_tenant_id` (`tenant_id`) USING BTREE,
  KEY `bigdata_qiye_id` (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='申报企业表';
CREATE TABLE `bigdata_qiye_report` (
  `id` bigint(64) NOT NULL COMMENT '主键',
  `tenant_id` varchar(12) DEFAULT '000000' COMMENT '租户ID',
  `qiye_id` bigint(64) DEFAULT '0' COMMENT '企业扩展信息',
  `revenue` double(16,2) DEFAULT NULL COMMENT '营收',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `bqr_qiye_id` (`qiye_id`) USING BTREE,
  KEY `bgr_tenant_id` (`tenant_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='企业申报信息表';
CREATE TABLE `bigdata_tech_improve_impl` (
  `id` bigint(64) unsigned zerofill NOT NULL COMMENT '主键',
  `tenant_id` varchar(12) DEFAULT '000000' COMMENT '租户ID',
  `qiye_id` bigint(64) DEFAULT '0' COMMENT '企业扩展信息',
  `total_input` decimal(64,2) DEFAULT NULL COMMENT '总投资',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='技改项目实施情况表';

需要合并导出 bigdata_qiye_report 表与 bigdata_tech_improve_impl 表的数据

表 bigdata_qiye 与表 bigdata_qiye_report 是 一对多的关系
表 bigdata_qiye 与表 bigdata_tech_improve_impl 也是 一对多的关系
表 bigdata_qiye_report 与表 bigdata_tech_improve_impl 没有关联关系

希望导出的excel格式

在这里插入图片描述

所以, 如果用链接查询的话产生的结果会偏差
比如这样

select bq.registration_type ,
bqr.revenue,
btii.total_input
from bigdata_qiye bq 
left join bigdata_qiye_report bqr
on bqr.qiye_id = bq.id
left join bigdata_tech_improve_impl btii
on btii.qiye_id = bq.id

在这里插入图片描述

会产生许多的重复数据 .

解决方法
使用 union(对结果集去重) 或者 union all(不去重) 关键字 将两个 select 语句的结果作为一个整体显示出来

第一个sql

select 
case 
bq.registration_type 
when 1 then '国有'
when 2 then '民营'
when 3 then '外资'
else ''
end as '注册类型',
bqr.revenue as '营收'
from bigdata_qiye bq 
left join bigdata_qiye_report bqr
on bqr.qiye_id = bq.id

第二个sql

select 
case 
bq.registration_type 
when 1 then '国有'
when 2 then '民营'
when 3 then '外资'
else ''
end as '注册类型',
btii.total_input as '总资产'
from bigdata_qiye bq 
left join bigdata_tech_improve_impl btii
on btii.qiye_id = bq.id

合并 SQL


(select 
case 
bq.registration_type 
when 1 then '国有'
when 2 then '民营'
when 3 then '外资'
else ''
end as '注册类型',
bqr.revenue as '营收'
from bigdata_qiye bq 
left join bigdata_qiye_report bqr
on bqr.qiye_id = bq.id) 

union all

(select 
case 
bq.registration_type 
when 1 then '国有'
when 2 then '民营'
when 3 then '外资'
else ''
end as '注册类型'
btii.total_input as '总资产'
from bigdata_qiye bq 
left join bigdata_tech_improve_impl btii
on btii.qiye_id = bq.id) 

执行, 报错
原因: 使用 union 关键字时, 必须要保证两张表的字段一模一样(包括顺序)
所以 修改sql
sql _1 修改

select 
case 
bq.registration_type 
when 1 then '国有'
when 2 then '民营'
when 3 then '外资'
else ''
end as '注册类型',
bqr.revenue as '营收',
'' as '总资产'
from bigdata_qiye bq 
left join bigdata_qiye_report bqr
on bqr.qiye_id = bq.id

sql_2修改

select 
case 
bq.registration_type 
when 1 then '国有'
when 2 then '民营'
when 3 then '外资'
else ''
end as '注册类型',
'' as '营收',
btii.total_input as '总资产'
from bigdata_qiye bq 
left join bigdata_tech_improve_impl btii
on btii.qiye_id = bq.id

合并SQL


(select 
case 
bq.registration_type 
when 1 then '国有'
when 2 then '民营'
when 3 then '外资'
else ''
end as '注册类型',
bqr.revenue as '营收',
'' as '总资产'
from bigdata_qiye bq 
left join bigdata_qiye_report bqr
on bqr.qiye_id = bq.id) 

union all

(select 
case 
bq.registration_type 
when 1 then '国有'
when 2 then '民营'
when 3 then '外资'
else ''
end as '注册类型',
'' as '营收',
btii.total_input as '总资产'
from bigdata_qiye bq 
left join bigdata_tech_improve_impl btii
on btii.qiye_id = bq.id) 

查询结果

在这里插入图片描述

到此这篇关于mysql 两张表数据合并的实现的文章就介绍到这了,更多相关MySQL 数据合并内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 两张表数据合并的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL 两张表数据合并的实现

有一个需求, 需要从数据库中导出两张表的数据到同一个excel中鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据.数据涉及到三张表CREATE TABLE `bigdata_qiye` (`id` bigint(64
2023-01-05

MySQL两张表数据合并的实现

本文主要介绍了MySQL两张表数据合并的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-05

sql两张表数据怎么合并成一张表

可以通过使用SQL的JOIN操作来合并两张表的数据。下面是一个简单的例子:假设有两个表,一个是"table1",包含字段"id"和"name",另一个是"table2",包含字段"id"和"age"。要合并这两张表的数据,可以使用如下的
sql两张表数据怎么合并成一张表
2024-04-09

MYSQL使用Union将两张表的数据合并显示

使用UNION操作符 union:用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 使用union操作符会将多张表中相同的数据取值一次,如果想将表1和表2中的值完整的显示出来,可以
2022-05-23

sql两张表纵向合并怎么实现

在SQL中,可以使用UNION ALL语句来实现两张表的纵向合并。具体语法如下:SELECT * FROM table1UNION ALLSELECT * FROM table2;其中,table1和table2是要合并的两张表。使用
sql两张表纵向合并怎么实现
2024-04-09

MySQL如何实现两张表取差集

目录mysql两张表取差集求差集 SQL 脚本MySQL查两个表之间的数据差集SQL LEFT JOIN 关键字总结MySQL两张表取差集业务场景如下:人员表中有证件号、手机号字段,这两个字段因为涉及到个人隐私问题,因此加密存储,有另外
2023-02-07

oracle两张表横向合并的方法是什么

在Oracle中,可以使用`UNION`操作符来将两张表横向合并。`UNION`操作符用于合并两个或多个`SELECT`语句的结果集,并返回一个唯一的结果集。以下是一个示例:```SELECT column1, column2FROM ta
2023-08-11

oracle两张表纵向合并的方法是什么

在Oracle中,可以使用`UNION`操作符来实现两个表的纵向合并。`UNION`操作符会将两个表的结果集合并为一个结果集,两个表的列数和类型必须一致。语法如下:```SELECT column1, column2, ...FROM ta
2023-09-15

Pandas快速合并多张excel表格的两种方法

最近学习了python遍历目录,下面这篇文章主要给大家介绍了关于Pandas快速合并多张excel表格的两种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-01-29

Mysql 如何实现多张无关联表查询数据并分页

Mysql 多张无关联表查询数据并分页 功能需求 在三张没有主外键关联的表中取出自己想要的数据,并且分页。 数据库表结构 水果表:坚果表: 饮料表:数据库随便建的,重在方法。 主要使用UNION ALL 操作符 UNION ALL 操作
2022-06-01

MySQL两张表联合查询的方法是什么

MySQL可以通过使用JOIN语句将两张表联合查询,具体方法如下:SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;其中,tabl
MySQL两张表联合查询的方法是什么
2024-04-09

Java怎么把两个数据表合并

在Java中,可以使用数据库连接库(如JDBC)来连接数据库,并执行SQL语句来合并两个数据表。以下是一个示例代码:import java.sql.Connection;import java.sql.DriverManager;im
Java怎么把两个数据表合并
2024-03-05

thinkphp怎么实现两张表的查询

本文小编为大家详细介绍“thinkphp怎么实现两张表的查询”,内容详细,步骤清晰,细节处理妥当,希望这篇“thinkphp怎么实现两张表的查询”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第一步:获取数据库对象
2023-07-06

sql怎么合并两个数据库中的表

可以使用以下方法合并两个数据库中的表:使用INSERT INTO语句:将源数据库中的表数据插入到目标数据库中的表中。例如:INSERT INTO 目标数据库.目标表SELECT * FROM 源数据库.源表;这将复制源表中的所有数据到目标
sql怎么合并两个数据库中的表
2024-04-09

oracle怎么查询两个表的合并数据

要查询两个表的合并数据,可以使用 UNION 或 UNION ALL 操作符。例如,假设有两个表 A 和 B,我们想要查询这两个表的合并数据,可以使用以下 SQL 查询语句:SELECT * FROM AUNIONSELECT *
oracle怎么查询两个表的合并数据
2024-05-13

编程热搜

目录