Mysql 将每日表插入主表,如果键存在,则更新主表中的行
我正在尝试将每日表插入到包含主键的主表中。我有以下体系结构: python脚本在数据框中生成数据->删除每日表->推送到每日表->将数据从每日表推送到主表 我不能放弃主表,但我可以放弃每日表。目前,我正在使用以下查询来执行此操作:Mysql 将每日表插入主表,如果键存在,则更新主表中的行,mysql,sql,sql-update,sql-insert,Mysql,Sql,Sql Update,Sql Insert,我正在尝试将每日表插入到包含主键的主表中。我有以下体系结构: python脚本在数据框中生成数据->删除每日表->推送到每日表->将数据从每日表推送到主表 我不能放弃主表,但我可以放弃每日表。目前,我正在使用以下查询来执行此操作: REPLACE INTO mydb.{to_table} SELECT * FROM mydb.{from_table}; 但我收到以下错误消息: ERROR (1062, "Duplicate entry '214748364
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。。。更新重复密钥
,但无法使其正常工作
是否有方法将新行从daily表插入到主表中,并更新主表中的现有行?表的结构几乎每天都有变化,我希望避免手动定义列。是的,这看起来是插入的一个很好的用例。。。在重复键上语法 假设您的表的主键名为
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
有100多个栏目,几乎每天都有,我希望我不必手动输入栏目names@Lukasz当前位置据我所知,没有这样的捷径。您必须枚举列,至少在重复键更新上的
子句中是这样(您可能不会在插入中列出列名,而是使用选择*
,尽管这不是一个好的做法)。