mysql多表重复数据只保留一行的思路

一、问题描述

假设有3个表,test_atest_btest_c

test_atest_b中有些重复数据;

现在要把这2个表的数据同步到表c,但是重复数据只保留1行。

样例如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具体要求如下:
1.test_atest_b中都存在的数据(根据card关联),以test_a为准,并且把authority字段拼起来(逗号分隔),移动到test_c

2.对于test_a不存在但是test_b存在的数据,以test_b为准,移动到test_c

3.对于test_a存在但是test_b不存在的数据,以test_a为准,移动到test_c

二、sql样例

1.首先查询到test_a不存在但是test_b存在的数据:

SELECTNULL AS user_id,b.card,b. NAME,b.authority
FROMtest_b b
LEFT JOIN test_a a ON b.card = a.card
WHEREa.id IS NULL

使用a.id is null,就说明是test_b存在、test_a不存在了;
然后可以把这部分数据存入test_c

2.然后查询test_a 存在 && ( test_b 存在 || test_b 不存在)的数据

SELECTa.user_id,a.card,ifnull(a.NAME, b.NAME),CASE
WHEN a.authority IS NULL
AND b.authority IS NULL THENNULL
WHEN a.authority IS NOT NULL
AND b.authority IS NOT NULL THENconcat(a.authority,',',b.authority)
WHEN a.authority IS NOT NULL
AND b.authority IS NULL THENa.authority
WHEN a.authority IS NULL
AND b.authority IS NOT NULL THENb.authority
ELSEa.authority
END AS authority
FROMtest_a a
LEFT JOIN test_b b ON a.card = b.card

使用了ifnull(a.NAME, b.NAME),,可以当test_a表的数据为空时(不准确了),使用test_b表的数据;

注意这里有个坑,使用concat(a.authority,',',b.authority)时,如果有一个表的数据为null,那么最终结果就会是null,不符合预期;

//这样有些问题
//select a.user_id,a.card,a.name,a.authority,b.authority,concat(a.authority,',',b.authority) from test_a a left join test_b b on a.card=b.card 

在这里插入图片描述

并且还需要判断是否需要拼接,

因此sql中使用了case when写法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/218153.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能|机器学习——循环神经网络的简洁实现

循环神经网络的简洁实现 如何使用深度学习框架的高级API提供的函数更有效地实现相同的语言模型。 我们仍然从读取时光机器数据集开始。 import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lbatch_size, num_steps 32, 35 t…

2023年最新IntelliJ IDEA下载安装以及Java环境搭建教程(含Java入门教程)

文章目录 写在前面Java简介IntelliJ IDEA简介IntelliJ IDEA下载安装JDK简介JDK下载教程 Java入门IntelliJ IDEA使用教程 写在后面 写在前面 2023年最新IntelliJ IDEA下载安装教程,内含JAVA环境搭建教程,一起来看看吧! Java简介 Java是一门…

福州大学《嵌入式系统综合设计》实验七:图像灰度直方图

一、实验目的 直方图是一种统计特征,在图像中广为使用,因为具有计算简便、不受平移、旋转的影响,因此可以作为图像的一种有效的局部/全局特征来表示图像,是图像的重要特征之一。直方图在SIFT算法、HOG算法、直方图均衡等图像特征…

2023大模型安全解决方案白皮书

今天分享的是大模型系列深度研究报告:《2023大模型安全解决方案白皮书》。 (报告出品方:百度安全) 报告共计:60页 前言 在当今迅速发展的数字化时代,人工智能技术正引领着科技创新的浪潮而其中的大模型…

一种太阳能风能市电互补路灯方案介绍

太阳能市电互补路灯是一种环保、节能的照明设施,它利用太阳能进行发电并实现照明。这种路灯在白天吸收阳光并将其转化为电能,到了晚上则利用储存的电能为LED灯提供电力,实现照明功能。下面叁仟智慧将详细介绍太阳能市电互补路灯灯的工作原理和…

深信服实验学习笔记——nmap常用命令

文章目录 1. 主机存活探测2. 常见端口扫描、服务版本探测、服务器版本识别3. 全端口&#xff08;TCP/UDP&#xff09;扫描4. 最详细的端口扫描5. 三种TCP扫描方式 1. 主机存活探测 nmap -sP <靶机IP>-sP代表 2. 常见端口扫描、服务版本探测、服务器版本识别 推荐加上-v参…

基于springboot实现高校食堂移动预约点餐系统【项目源码】计算机毕业设计

基于springboot实现高校食堂移动预约点餐系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…

isis基础大全学习案例

R1配置&#xff1a; isis 1 is-level level-2 //本区域只启用level-2级别 cost-style wide //默认为narrow窄度量&#xff0c;开销只能最大63&#xff0c;并且不能打tag&#xff0c;wide宽度量的tlv和narrow不匹配&#xff0c;不能相互计算路由&#xff0c;两边都要改。 netwo…

Go语言的学习笔记2——Go语言源文件的结构布局

用一个只有main函数的go文件来简单说一下Go语言的源文件结构布局&#xff0c;主要分为包名、引入的包和具体函数。下边是main.go示例代码&#xff1a; package mainimport "fmt"func main() { fmt.Println("hello, world") }package main就是表明这个文件…

ESP32网络开发实例-远程Web串口监视器

远程Web串口监视器 文章目录 远程Web串口监视器1、应用介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将构建一个 ESP32 网络服务器,用作远程串行监视器。 基于 Web 的串行监视器的工作方式与通常用于调试目的的 Arduino IDE 串行监视器的工作方式相同。 1、应用介绍 …

AI绘画“湿地公园的美女”

1、AI绘画&#xff1a;湿地公园的美女 通过输入描述&#xff1a;你需要什么场景的什么创作内容&#xff0c;AI根据内容创造出适合的主题 如图所示&#xff1a;请帮我创作一个湿地公园的像高圆圆的美女图片。 输出的结果如下&#xff1a;总体来说感觉还是非常快&#xff0c;基…

1panel可视化Docker面板安装与使用

官网地址1Panel - 现代化、开源的 Linux 服务器运维管理面板 文章目录 目录 文章目录 前言 一、环境准备 二、使用步骤 1.安装命令 2.一些命令 3.使用 总结 前言 一、环境准备 虚拟机centos 已经安装好docker和 Docker Compose 或者都没安装 1panel会帮你自动安装 二、使用…