使用SQL从现有数据生成测试表

时间:2014-05-01 19:35:58

标签: mysql 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)  
)

请注意,上面的示例不起作用。

1 个答案:

答案 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,
)