错误:语法错误在或附近" FROM"

时间:2017-09-22 19:46:34

标签: sql postgresql syntax-error sql-insert

一个非常简单的错误,我根本不知道。 这是代码:

INSERT INTO srs1.modulegrades

VALUES (srs1.student.student_id, srs1.modules.module_id, floor(random() * 10))

FROM srs1.student, srs1.modules;

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

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

感谢用户使用melpomene进行以下操作:

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;