mySql将行复制到同一个表中,键值已更改(不覆盖现有)

时间:2011-07-01 15:03:15

标签: mysql copy

如何从mySql表中复制选择的行并插入仅更改的键值。我可以在同一个查询中进行选择和插入吗?

准确地说,我想要的是这样的:

表格cols,ID和ISO3是键:
[ID] [ISO3] [文字]
1,ENU,英文文本
2,ENU,英文的另一个文本
3,ENU,bla bla
1,JPN,与えられた枠

插入后我希望我的桌子看起来像这样:
1,ENU,英文文本
2,ENU,英文的另一个文本
3,ENU,bla bla
1,JPN,与えられた枠
2,JPN,另一个英文文本
3,JPN,bla bla

3 个答案:

答案 0 :(得分:24)

INSERT INTO your_table (ID, ISO3, TEXT) SELECT ID, 'JPN', TEXT FROM your_table WHERE ID IN ( list_of_ id's )

如果你想改变一个单元格中的值,只需硬键入值而不是从表中选择(就像我用'JPN'那样)。

答案 1 :(得分:5)

如果您的密钥是auto_increment,并且您有一个类似primary_key | col1 | col2 | col3的表结构,那么您可以按照

的方式执行某些操作。
INSERT INTO table (
   col1, col2, col3
) SELECT col1, col2, col3
FROM table
WHERE primary_key IN(1, 2, 45, 54, 774, 4434 /* etc */);

答案 2 :(得分:0)

你可以做到

insert into your_table (SELECT field1, field2,(changed_value_for_field3) as field3 FROM your_table where your_condition);