2017-09-22 290 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,我會添加到我的答案。 –

相關問題