我有两个数据库表。两个表有相同的结构。现在我想将旧表中的数据插入到新表中,如果数据已经存在,它将更新旧数据,否则插入新数据。我想通过匹配一些列字段值来插入或更新数据。有帮助吗?
答案 0 :(得分:0)
您可以使用MySQL的ON DUPLICATE KEY UPDATE
功能。来自MySQL doc -
如果指定ON DUPLICATE KEY UPDATE,则插入一行 会在UNIQUE索引或PRIMARY KEY,MySQL中导致重复值 执行旧行的更新。
因此,如果您在表格中定义了键,则可以使用此功能。例如,您的陈述将如下所示 -
insert into target_table (col1, col2, ...)
select col1, col2,... from source_table
on duplicate key update
col1 = values(col1),
col2 = values(col2),
答案 1 :(得分:0)
最好的方法是你可以使用左外连接概念。这很容易。
INSERT INTO table1
(col_1, col_2, col_3, col_4, col_5) values("","","","")
SELECT
table2_col_1,
table2_col_2,
table2_col_3,
table2_col_4,
1
FROM
table_2 AS t2
LEFT OUTER JOIN
table1 AS t1
ON
t1.col_1 = t2.table2_col_1;
UPDATE table_2
SET table2_col_1 = 'value'// here is the value that you need to implement
WHERE t1.col_1=t2.table2_col_1;//here is your condition
答案 2 :(得分:0)
从你的问题中,我明白你的表2并不是那么重要。 因此,您可以删除整个table2中存在的值,以便结构不会受到影响。完成后...您可以导出插入查询以实现table1中存在的值。