Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将每日表插入主表,如果键存在,则更新主表中的行_Mysql_Sql_Sql Update_Sql Insert - Fatal编程技术网

Mysql 将每日表插入主表,如果键存在,则更新主表中的行

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

我正在尝试将每日表插入到包含主键的主表中。我有以下体系结构:

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。。。更新重复密钥
,但无法使其正常工作


是否有方法将新行从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当前位置据我所知,没有这样的捷径。您必须枚举列,至少在重复键更新上的
子句中是这样(您可能不会在
插入中列出列名,而是使用
选择*
,尽管这不是一个好的做法)。