我从一个数据生成器网站下载了两个SQL表A和B。假设这两个表都使用std_id列链接(A中的std_id是主键,B中的std_id是外键)。
问题是,我使用UUID生成这些列,A中的std_id都不匹配B中的任何std_id。我想知道如何使用A中的std_id以随机方式从B中更新std_id。我的查询:
do
$$
declare
ele record;
begin
for ele in select std_id from B
loop
update A
set std_id = (SELECT std_id FROM student OFFSET floor(random() * 100) LIMIT 1);
end loop;
end;
$$
其将B中的所有记录的std_id设置为A中的单个std_id。
我应该怎么做才能在B中随机选择不同的std_id(也就是说,在每次循环迭代中,我想要一个来自A的随机std_id,而不是来自A的单个随机std_id)。
感谢您的评分
1条答案
按热度按时间zzzyeukh1#
假设表
A
包含100行和yout表
B
包含1000行简单地用唯一行号(
rn
)计算每个A
行并为每个
B
行分配一个介于1和100之间的随机整数(=A
的行连接)请注意,您为
B
的每一行随机选择了A
中唯一的一行,即您定义了FK关系。现在,简单地在
rn
上连接上述两个子查询,您将得到一个应该更新的new_std_id
(来自A
的相关记录的std_id
)。查询
现在,您已经准备好了一个数据,可以使用 * joinupdate * 更新表
B