2017-09-22 70 views

回答

1

貌似你试图使用insert-select语句:

INSERT INTO srs1.modulegrades 
SELECT  srs1.student.student_id, 
      srs1.modules.module_id, 
      FLOOR(RANFOM() * 10)) 
FROM  srs1.student, srs1.modules; 

注意隐含的加入(该from子句中具有比表更多)被认为是过时,你最好使用明确的交叉连接:

INSERT INTO srs1.modulegrades 
SELECT  srs1.student.student_id, 
      srs1.modules.module_id, 
      FLOOR(RANFOM() * 10)) 
FROM  srs1.student 
CROSS JOIN srs1.modules; 
+0

谢谢,这工作过。不是我期望的,但这是我的逻辑,而不是代码 –

+0

我现在试图让student_id只发生4次。我会怎么做呢? –

1

从现有关系插入关系需要SELECT条款。子句values用于为输入到系统的数据动态创建关系。

感谢用户墨尔波墨涅以下:

Relevant part of the documentation。请注意,VALUES ...和查询被列为替代项;即您不能同时拥有VALUES和SELECT ... FROM。

下面应该为你的数据库工作:

INSERT INTO srs1.modulegrades 
    SELECT srs1.student.student_id 
     , srs1.modules.module_id 
     , floor(random() * 10) 
    FROM srs1.student, srs1.modules; 
+1

文档的相关部分:https://www.postgresql.org/docs/current/static/sql-insert.html。请注意,“VALUES ...”和** _ query _ **被列为替代项;即你不能同时拥有'VALUES'和'SELECT ... FROM'。 – melpomene

+0

谢谢@melpomene,我会添加到我的答案。 –

相关问题