将旧表中的数据插入新表

时间:2016-05-31 07:15:16

标签: php mysql database

我有两个数据库表。两个表有相同的结构。现在我想将旧表中的数据插入到新表中,如果数据已经存在,它将更新旧数据,否则插入新数据。我想通过匹配一些列字段值来插入或更新数据。有帮助吗?

3 个答案:

答案 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中存在的值。