2012-04-19 92 views
3

這聽起來有點讓人困惑。但是我有一個包含數據的表,我想創建此表中所有行的重複項。所以,如果我這樣做:用sql創建重複內容

SELECT * 
FROM the_table 

它列出了此表中的所有數據。現在,我想創建一個所有返回結果的副本,除了我想更改一列(日期)的數據。這將使新行獨一無二。

我想這樣做的原因是因爲我爲了測試目的需要在此表中創建更多數據。所以,如果我有這樣的:

**Column1 Column2 Column3** 
abc  aaa   bbb 
abcd  aaaa  bbbb 
abcde  aaaaa  bbbbb 

The table will now contain: 
**Column1 Column2 Column3** 
abc  aaa   bbb 
abcd  aaaa  bbbb 
abcde  aaaaa  bbbbb 
abc  aaa   bbb_new 
abcd  aaaa  bbbb_new 
abcde  aaaaa  bbbbb_new 

回答

6
insert into your_table 
    select col1, col2, concat(col3, '_new') from your_table 
+0

謝謝,我得到它的工作。雖然我想在更新的行中更新當前日期。我爲此使用了Dateadd – 2012-04-19 09:22:04

2
INSERT INTO TABLEDUPLICATES 
SELECT * FROM the_table 


SELECT * FROM TABLEDUPLICATES UNION 
SELECT * FROM the_table 
2

假設有一個標識列(ID),你可能會生成日期(A_Date)是這樣的:

insert into the_table (Column1, Column2, A_Date) 
select Column1, Column2, A_Date + (rand(ID) - 0.5) * 100 
    from the_table 
2

要複製行(所有列),你根本就使用

insert into tblname 
select * from tblname 

改變一列可以被修飾以

insert into tblname 
select column1, column2, 'fixedvalueforcolumn3' from tblname 

但是你需要第3列的唯一值,所以你必須「fixedvalueforcolumn3」改變爲將列3

insert into tblname 
    select column1, column2, generateRandomValue() from tblname 

希望這將有助於產生一些隨機的(唯一的)值(在你的情況爲準)的功能你