這是一個非常簡單的錯誤,我只是不知道。 下面的代碼:錯誤:在「FROM」處或附近的語法錯誤
INSERT INTO srs1.modulegrades
VALUES (srs1.student.student_id, srs1.modules.module_id, floor(random() * 10))
FROM srs1.student, srs1.modules;
這是一個非常簡單的錯誤,我只是不知道。 下面的代碼:錯誤:在「FROM」處或附近的語法錯誤
INSERT INTO srs1.modulegrades
VALUES (srs1.student.student_id, srs1.modules.module_id, floor(random() * 10))
FROM srs1.student, srs1.modules;
貌似你試圖使用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;
從現有關係插入關係需要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;
文檔的相關部分:https://www.postgresql.org/docs/current/static/sql-insert.html。請注意,「VALUES ...」和** _ query _ **被列爲替代項;即你不能同時擁有'VALUES'和'SELECT ... FROM'。 – melpomene
謝謝@melpomene,我會添加到我的答案。 –
謝謝,這工作過。不是我期望的,但這是我的邏輯,而不是代碼 –
我現在試圖讓student_id只發生4次。我會怎麼做呢? –