簡體   English   中英

mySql 將行復制到同一個表中,鍵值已更改(不覆蓋現有)

[英]mySql copy rows into same table with key value changed (not overwriting existing)

如何從 mySql 表中復制選擇的行並插入僅更改了鍵值。 我可以做一個 select 並插入同一個查詢嗎?

准確地說,我想要的是這樣的:

表 cols、ID 和 ISO3 是鍵:

+----+------+-------------------------+
| ID | ISO3 |          Text           |
+----+------+-------------------------+
|  1 | ENU  | A text in english       |
|  2 | ENU  | Another text in english |
|  3 | ENU  | bla bla                 |
|  1 | JPN  | 與えられた枠             |
+----+------+-------------------------+

插入后,我希望我的表格如下所示:

+----+------+---------------------------+
| ID | ISO3 |           Text            |
+----+------+---------------------------+
|  1 | ENU  | A text in english         |
|  2 | ENU  | Another text in english   |
|  3 | ENU  | bla bla                   |
|  1 | JPN  | 與えられた枠               |
|  2 | JPN  | Another text in english   |
|  3 | JPN  | bla bla                   |
+----+------+---------------------------+
INSERT INTO your_table (ID, ISO3, TEXT) 
SELECT ID, 'JPN', TEXT
FROM your_table 
WHERE ID IN ( list_of_ id's )

如果您想更改一個單元格中的值,只需硬輸入該值而不是從表中選擇(就像我對“JPN ”所做的那樣)。

如果您的鍵是 auto_increment,並且您的表結構類似於primary_key | col1 | col2 | col3 primary_key | col1 | col2 | col3 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 */);

你可以做

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM