首页 > 解决方案 > 如何为每个学生 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()

谢谢你的帮助。

标签: sqlsql-server

解决方案


你需要的是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;

推荐阅读