SQL Insert into ColX表1从表2中选择ColY,其中Table1.colA = Table2.ColB

时间:2016-01-28 22:12:46

标签: sql postgresql sql-insert

我是一个java而不是一个sql开发人员。我已经为此寻找了SO,但由于某种原因无法找到类似WHERE标准的问题

在PostgreSQL中,以下语法不正确

INSERT INTO contentelementtypeprogressortype  (contentelementtypeclassname)
SELECT contentelementtypename FROM contentelementtype
WHERE
contentelementtype.id=contentelementtypeprogressortype.contentelementtypeid

错误是:

  

错误:对表" contentelementtypeprogressortype"的FROM子句条目的无效引用   第2行:... OM contentelementtype其中contentelementtype.id = contentele ...                                                                ^   提示:表" contentelementtypeprogressortype"有一个条目,但不能从查询的这一部分引用它。   **********错误**********

     

错误:对表" contentelementtypeprogressortype"的FROM子句条目的无效引用   SQL状态:42P01   提示:有一个表" contentelementtypeprogressortype"的条目,但它不能从查询的这一部分引用。   性格:159

1 个答案:

答案 0 :(得分:1)

这是您的查询:

INSERT INTO contentelementtypeprogressortype(contentelementtypeclassname)
    SELECT cet.contentelementtypename
    FROM contentelementtype  cet
    WHERE cet.id = contentelementtypeprogressortype.contentelementtypeid;

我认为你真的不想要INSERT - 这会增加一个新行。我想你真的想要一个UPDATE,它会改变现有行中的值:

UPDATE contentelementtypeprogressortype cetpt
    SET contentelementtypeclassname = cet.contentelementtypename
    FROM contentelementtype  cet
    WHERE cet.id = cetpt.contentelementtypeid;