如何使用SQL分别对每一列进行随机化

时间:2019-03-19 13:24:57

标签: sql join select random

让我的桌子看起来像这样。

Input: Table Person
ID | first_name | last_name | age | gender
1  | Robert     | Müller    | 34  | m
2  | Jannis     | Fischer   | 19  | m
3  | Monika     | Schmid    | 54  | f

目的是使用表本身“创建”数据。我想将表格的中心列随机化,然后放回去。

我想按性别将first_name随机化,使他们永远在一起,并且可以按其栏将last_name和age随机化。

Output: Table Person

ID | first_name | last_name | age | gender
1  | Robert     | Schmid    |  34 | m
2  | Monika     | Müller    |  54 | f
3  | Jannis     | Fischer   |  19 | m

我试图加入两个选择语句,但这并没有真正起作用。

我可能是这样的:

Select ID, first_name, gender From Person TABLESAMPLE SYSTEM(10);

UNION

Select ID, last_name, age From Person TABLESAMPLE SYSTEM(10);

1 个答案:

答案 0 :(得分:0)

您似乎想随机划分姓名和年龄/性别。假设您不希望重复,那么可以使用row_number()和一个随机数生成器。您尚未指定数据库,但想法是:

select seqnum as id,
       pn.first_name, pn.last_name, pd.age, pd.gender
from (select p.*, row_number() over (order by random()) as seqnum
      from persons
     ) pn join
     (select p.*, row_number() over (order by random()) as seqnum
      from persons
     ) pd 
     on pn.seqnum = pd.seqnum;