从另一个表插入到表中,如果已经存在则更新

qgelzfjb  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(348)

我想知道如何在表中插入/更新行。
我有两个表,real\u table和temp\u table,temp\u table保存了我想要更新real\u table的所有数据。但是,其中一些行不存在于real\表中。所以我想运行一个命令,基本上插入一行如果它不存在,如果它确实存在,用新的值更新它。
我要更新的主要内容是 value 列。以下是我迄今为止的尝试:

INSERT INTO `real_table`(value_id, entity_type_id, attribute_id, store_id, entity_id, value)
FROM temp_table
VALUES (value_id, entity_type_id, attribute_id, store_id, entity_id, value)
ON DUPLICATE UPDATE
value = temp_table.value

但我有个错误


# 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM temp_table VALUES (value_id, entity_type_id, attribute_id, store_id, entit' at line 2
mbzjlibv

mbzjlibv1#

试试这个: INSERT INTO real_table (value_id, entity_type_id, attribute_id, store_id, entity_id, value) SELECT temp_table VALUES (value_id, entity_type_id, attribute_id, store_id, entity_id, value)

fafcakar

fafcakar2#

您需要使用select更正insert的语法

INSERT INTO `real_table`(value_id, entity_type_id, attribute_id, store_id, entity_id, value)
SELECT value_id, entity_type_id, attribute_id, store_id, entity_id, value
FROM temp_table
ON DUPLICATE KEY UPDATE value = temp_table.value

确保定义了唯一索引,以便在重复密钥更新时利用

相关问题