2013-01-18 143 views
0

我正在使用mysql並需要複製我表中的所有行,但我不重複id列和新生成號碼 需要前。如何複製行並在mysql中生成不重複的ID

我的表

   item_db    
+------------------------------------------+  
| id | name  | price | detail | 
+------------------------------------------+ 
| 1 | example | 230 |   3 | 
| 2 | power  | 110 |   3 | 
| 3 | voltage | 1.2 |   4 | 
| 4 | example | 240 |   4 | 
| 5 | example | 320 |   6 | 
| 6 | power  | 100 |   4 | 
| 7 | power  | 110 |   6 | 
| 8 | example | 230 |   3 | 
| 9 | power  | 110 |   3 | 
| 10 | voltage | 1.2 |   4 | 
| 20 | example | 240 |   4 | 
| 21 | example | 320 |   6 | 
| 22 | power | 100 |   4 | 
| 23 | power | 110 |   6 | 
| 24 | example | 240 |   4 | 
| 25 | example | 320 |   6 | 
| 26 | power | 100 |   4 | 
| 27 | power | 110 |   6 | 
| 28 | example | 240 |   4 | 
| 29 | example | 320 |   6 | 
| 30 | power | 100 |   4 | 
+------------------------------------------+ 

我需要複製

   item_db    
+------------------------------------------+  
| id | name  | price | detail | 
+------------------------------------------+ 
| 1 | example | 230 |   3 | 
| 2 | power  | 110 |   3 | 
| 3 | voltage | 1.2 |   4 | 
| 4 | example | 240 |   4 | I need to dup id 1-10 to 101-110 
| 5 | example | 320 |   6 | 
| 6 | power  | 100 |   4 | 
| 7 | power  | 110 |   6 | 
| 8 | example | 230 |   3 | 
| 9 | power  | 110 |   3 | 
| 10 | voltage | 1.2 |   4 | 
| 101| example | 230 |   3 | 
| 102| power  | 110 |   3 | 
| 103| voltage | 1.2 |   4 | 
| 104| example | 240 |   4 | 
| 105| example | 320 |   6 | 
| 106| power  | 100 |   4 | 
| 107| power  | 110 |   6 | 
| 108| example | 230 |   3 | 
| 109| power  | 110 |   3 | 
| 110| voltage | 1.2 |   4 | 
| 20 | example | 240 |   4 | 
| 21 | example | 320 |   6 | 
| 22 | power | 100 |   4 | 
| 23 | power | 110 |   6 | 
| 24 | example | 240 |   4 | 
| 25 | example | 320 |   6 | 
| 26 | power | 100 |   4 | i need to dup 20-30 to 200-210 
| 27 | power | 110 |   6 | 
| 28 | example | 240 |   4 | 
| 29 | example | 320 |   6 | 
| 30 | power | 100 |   4 | 
| 200| example | 240 |   4 | 
| 201| example | 320 |   6 | 
| 202| power | 100 |   4 | 
| 203| power | 110 |   6 | 
| 204| example | 240 |   4 | 
| 205| example | 320 |   6 | 
| 206| power | 100 |   4 | 
| 207| power | 110 |   6 | 
| 208| example | 240 |   4 | 
| 209| example | 320 |   6 | 
| 210| power | 100 |   4 | 
+------------------------------------------+ 

感謝各位高手。

回答

1

您可以使用INSERT ... SELECT

INSERT INTO item_db (id, name, price, detail) 
SELECT id+180, name, price, detail FROM item_db WHERE id BETWEEN 20 AND 30 

你要正確對待id並不完全清楚究竟是如何。例如,如果您希望自動分配AUTO_INCREMENT值,那麼您可以(像往常一樣)從INSERT聲明中省略它。