sql - 如何在 SQL 中保留数据的同时进行重复数据删除
问题描述
我有一个数据集我正在尝试去重,而不会丢失外键。
继承人的结构:
PK1 UUID
PK2 BIGINT
FK1 BIGINT
FK2 BIGINT
DATA1 STRING
DATA2 INTEGER
...
so forth.
PK 是组合的 PK。两个 FK 来自两个单独的其他表。
此表中有重复的行。如果 PK1 和 PK2 重复,则数据字段是重复的。FK是我的问题。
数据如下所示:
PK1 PK2 FK1 FK2 Data1 Data2 Data3
1 1 1 null a b c
1 1 null 2 a b c
1 2 5 null d e f
1 2 null 7 d e f
我需要的是:
PK1 PK2 FK1 FK2 Data1 Data2 Data3
1 1 1 2 a b c
1 2 5 7 d e f
我怎样才能混合这些记录?
谢谢
解决方案
你似乎想要聚合:
select PK1, PK2, max(FK1) as fk1, max(FK2) as fk2,
Data1, Data2, Data3
from t
group by PK1, PK2, Data1, Data2, Data3;
推荐阅读
- partial-views - 每个列表项的 PartialView
- windows - 将一个文件拖到另一个文件上并释放到底是做什么的?
- javascript - 我的简单 rng 代码不起作用。为什么呢?
- c - “运行代码”在 Visual Studio Code(Ubuntu c 语言)中不起作用
- c - avcodec_find_decoder() - 分段错误
- c++ - c++ 文件之间未定义的引用
- xcode - 如何判断给定框架(Xcode 12)中嵌入了哪些框架?
- r - 计算R中多列的累积和
- r - 从 R 中的大型 XML 文件中提取数据的最有效方法
- java - spring rabbitmq - 同时消费多条消息