mysql - 如果键存在,则将每日表插入主表并更新主表中的行
问题描述
我正在尝试将每日表插入到其中包含主键的主表中。我有以下架构:
在熊猫数据框中生成数据的python脚本->删除每日表->推送到每日表->将数据从每日表推送到主表。
我不能删除主表,但我可以删除每日表。目前我正在使用以下查询来执行此操作:
REPLACE INTO
mydb.{to_table}
SELECT
*
FROM
mydb.{from_table};
但我收到以下错误消息:
ERROR (1062, "Duplicate entry '2147483647' for key 'PRIMARY'") with sql
REPLACE INTO
mydb.book_authors_v2
SELECT
*
FROM
mybd.books_authors_v2_daily;
我试过使用INSERT ... UPDATE ON DUPLICATE KEY
,但它没有设法让它工作。
有什么方法可以将日常表中的新行插入主表并更新主表中的现有行?表的结构几乎每天都会发生变化,我想避免手动定义列。
解决方案
是的,这看起来像是INSERT ... ON DUPLICATE KEY
语法的一个很好的用例。
假设您的表的主键被称为id
,并且您有 3 个其他列col1
,您想要更新重复col2
,看起来像:col3
id
insert into mydb.book_authors_v2(id, col1, col2, col3)
select id, col1, col2, col3
from mybd.books_authors_v2_daily d
on duplicate key update set col1 = d.col1, col2 = d.col2, col3 = d.col3
推荐阅读
- java - 目标运行时 WebSphere Application Server 传统版 V9.0 未定义
- python - 获得最大收益的算法
- filesystems - 在 ubifs 卷上应用增量补丁
- html - 具有三种状态的复选框
- python - 如何仅在 tkinter 中更改所选文本的属性
- firebase - Firebase Cloud Functions:`convert` 因 ChildProcessError 而失败
- reactjs - 如何将 react-helmet 与 netlify 预渲染一起使用?
- python - 如何使用 atom-python-run 包在 Atom 中运行 python 脚本?
- git - 旧的提交出现在新的拉取请求中?
- java - 无法在线性布局中移动项目