我如何SQL单独随机化每列

问题描述 投票:0回答:1

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

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

目的是使用表本身“创建”数据。我想随机化我的表的centraint列并将它们重新组合在一起。

我想将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语句,但这并没有真正起作用。

我可能是这样的:

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

UNION

Select ID, last_name, age From Person TABLESAMPLE SYSTEM(10);
sql join select random
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.