sql - 如何为每个学生 ID 插入 5 个兴趣 ID?
问题描述
我希望能够在 Student_Interest 表中为每个学生 ID 插入五个兴趣 ID。
我试过了,但不是得到 30 行,而是得到 72 行(学生表中有 6 名学生,兴趣表中有 12 名学生):
INSERT INTO Student_Interest (Id_Student, Id_Interest, Score)
SELECT
Id_Student
,Id_Interest
,ABS(Checksum(NewID()) % 5) + 1
FROM Student, Interest
ORDER BY NEWID()
谢谢你的帮助。
解决方案
你需要的是CROSS JOIN
:
INSERT INTO Student_Interest (Id_Student, Id_Interest, Score)
SELECT Id_Student, Id_Interest, i.Score
FROM Student s CROSS JOIN
(SELECT TOP (5) Score FROM Interest ORDER BY NEWID()) i;
推荐阅读
- javascript - 如何从反应类组件中保存formData?
- java - Android 应用程序在打开 paytm 默认活动时崩溃。原因:java.lang.IllegalStateException:预期的 Android API 级别 21+ 但为 30
- java - 无法在模拟器上启动 android 应用程序
- javascript - 在数组的每一项末尾添加编号
- python - 如何获取在 django 的文件字段中上传的文件的原始名称
- javascript - 如何在多个条件下返回 True?
- java - Netflix DGS 中使用 ThreadLocal 的 Servlet 过滤器
- c++ - 具有 std::array 大小类型的派生模板类
- protocol-buffers - 是否可以在不编译 protobuf 编译器的情况下使用 Bazel?
- rust - 在 Rust 中将文件名转换为 URI