2016-01-28 54 views
0

我比java开发人员更多的是java。我已经看着SO这一点,但由于某种原因,WHERE条件SQL插入到ColX表1从表2中选择ColY其中Table1.colA = Table2.ColB

在PostgreSQL,下面的语法不正确,无法找到类似的问题

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

的错误是:

ERROR: invalid reference to FROM-clause entry for table "contentelementtypeprogressortype" LINE 2: ...OM contentelementtype where contentelementtype.id=contentele... ^ HINT: There is an entry for table "contentelementtypeprogressortype", but it cannot be referenced from this part of the query. ********** Error **********

ERROR: invalid reference to FROM-clause entry for table "contentelementtypeprogressortype" SQL state: 42P01 Hint: There is an entry for table "contentelementtypeprogressortype", but it cannot be referenced from this part of the query. Character: 159

回答

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; 
+0

愚蠢的我!我会关闭之前,我失去了代表 – Jake

+0

感谢一百万 – Jake

相关问题