sql - 根据两列从另一个 Postgres 插入一个表
问题描述
我有两个具有相同列的表,这些表没有唯一的列。假设这些列是 Col1、Col2、Col3 和 Col4。表格是 T1 和 T2。
我想要做的是插入从 T2 到 T1 的所有行,其中 Col1 和 Col2 组合在 T1 中已经不存在。Col1 是一个字符串,而 Col2 是一个 int。
例如 Col1 = "APPLE" 和 Col2 = "2019"。如果一行在 T2 中包含 Col1 = "APPLE" 和 Col2=2019,我不想将其插入到 T1 中,而如果一行包含 Col1 = "APPLE" 和 Col2=2020,那么我想将其插入到 T1 中。
我正在尝试找到最简单的解决方案来执行此操作,但似乎无法找到使用 INSERT INTO WHERE NOT EXISTS 或使用 UPSERT 的直接方法。
解决方案
与NOT EXISTS
:
insert into t1(Col1, Col2, Col3, Col4)
select Col1, Col2, Col3, Col4
from t2
where not exists (
select 1 from t1
where t1.Col1 = t2.Col1 and t1.Col2 = t2.Col2
)
查看简化的演示。
推荐阅读
- python - 从字符串列表python中查找最长的唯一字符串
- reactjs - 不能从函数返回值反应本机
- javascript - 如何正确使用 Formik 的 setError 方法?(反应库)
- c# - 玩家不会死于它应该死于的特定事物(2d 平台游戏)
- animation - 在 Swift 中启动和停止 UISlider 动画?
- r - R 检查组内的级别,如果不存在则重复行
- javascript - 如何使用 JS 在数组中声明数组索引值?
- c# - .NET Core 2.2 程序集 System.Windows.Forms 缺失
- serial-port - USB <> 串行(COM)端口响应时间
- html - 如何在同一个 ng-click 中添加谷歌分析