You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何从Student、University实体表随机填充Applies关联表

实现方案

你可以通过笛卡尔积生成所有学生和大学的配对组合,再用random()筛选10%左右的结果直接插入即可,不同的主键生成场景对应两种写法:

场景1:application_ID为自增主键(serial/IDENTITY类型)

不需要手动指定主键值,直接插入外键字段即可:

INSERT INTO Applies (student_ID, University_Name)
SELECT s.Student_ID, u.University_Name
FROM Student s
CROSS JOIN University u
WHERE random() < 0.1;

场景2:application_ID需要手动生成

用窗口函数row_number()生成连续主键值:

INSERT INTO Applies (application_ID, student_ID, University_Name)
SELECT 
  row_number() OVER () AS application_ID,
  s.Student_ID, 
  u.University_Name
FROM Student s
CROSS JOIN University u
WHERE random() < 0.1;

说明

  • CROSS JOIN会生成两个表的全量配对结果,也就是所有可能的申请关联,200个学生+200个大学的组合总量为40000条,筛选10%后约为4000条数据,random()的比例误差非常小
  • 插入前可以先把INSERT语句替换为SELECT COUNT(*)执行,核对行数符合预期后再执行插入操作
  • 数据库的外键约束会自动校验student_ID和University_Name的合法性,不需要额外加判断逻辑

内容的提问来源于stack exchange,提问作者priceless32

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:09:03