2014-05-01 30 views
0

我想創建一個基於我的地址表中現有值的測試數據表。使用SQL從現有數據生成測試表

例如,我想取一個隨機的名字值,姓氏值,地址等,並將其插入到我的TestAddress表中的新行中。總共有大約10列。

有沒有一種很好的方式來做到這一點,而不必爲每行的每列值做一次選擇?

例如

INSERT INTO TestAddress(Titel,Vorname,Nachname,Strasse,Hausnummer,Zusatz,PLZ,ORT) 

VALUES(
SELECT Titel FROM Adressen where ID = FLOOR(RAND()*50000000) , 
SELECT Vorname FROM Adressen where ID = FLOOR(RAND()*50000000) , 
SELECT Nachname FROM Adressen where ID = FLOOR(RAND()*50000000) , 
SELECT Strasse FROM Adressen where ID = FLOOR(RAND()*50000000) , 
SELECT Hausnummer FROM Adressen where ID = FLOOR(RAND()*50000000) , 
SELECT Zusatz FROM Adressen where ID = FLOOR(RAND()*50000000) , 
SELECT PLZ FROM Adressen where ID = FLOOR(RAND()*50000000) , 
SELECT ORT FROM Adressen where ID = FLOOR(RAND()*50000000) 
) 

注意,上面的例子中不起作用。

+0

示例數據會有幫助。所有輸入和來自單一表格的輸出和輸出都是? – imran

+0

你最好的選擇是使用和插入語句 –

+0

帶有數據的示例表將有助於推導或提出解決方案。請考慮這一點。 –

回答

2

想到你想問什麼,我假設你正在談論像從多行中選擇一列。並從所有這些列創建新記錄。

INSERT INTO table1 (col1,col2,col3,col4,...,col10) VALUES(
    (SELECT col1 FROM table2 WHERE rowid = #) as col1, 
    (SELECT col2 FROM table2 WHERE rowid = #) as col2, 
    (SELECT col3 FROM table2 WHERE rowid = #) as col3, 
    (SELECT col4 FROM table2 WHERE rowid = #) as col4, 
    ..., 
    (SELECT col10 FROM table2 WHERE rowid = #) as col10, 
) 
+0

嗨理查德,多數民衆贊成正是我想要做的,但也許與RAND()每個rowid。 但是,表現很糟糕,如果你這樣做,... – Ploetzeneder