假设我有一个表A (id string),我需要创建一个表B (id1 string, id2 string),以便从B.id2中随机抽取A.idB.id1A.id相同。例如:

A:

id
1
2
3
4

B:
id1   id2
 1     2
 1     3
 2     4
 2     3
 3     1
 3     2
 4     1
 4     4

也就是说,对于id中的每个A,随机采样id中的2 A作为新列id2。如何使用SQL执行此操作?我希望样品不需更换。但是如果id2等于id1是可以的。感谢你们对我的帮助!

最佳答案

一种方法是:

 select  id as id1, (select id from A order by rand() limit 1) as id2 from A
 union all
 select  id as id1, (select id from A order by rand() limit 1) as id2 from A

您可以使用insert into ... select ...将此值放入表B中。

如果要使用2个以上的id,例如几十个,则此方法是错误的选择。

关于mysql - SQL:如何为每行随机采样多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44984446/

10-12 23:02