0

在这个社区的帮助下,我能够使用内部联接生成查询,我认为这对我正在尝试做的事情有用。不幸的是,当我尝试运行下面找到的查询时,我收到了以下错误:

错误:多次指定表名“bue”


根据我在 Google 上阅读的内容,有人说不需要“FROM bue”,但是当我删除它时,我在下面发现了另一个错误:

错误:在字符 98 处或附近的“INNER”处出现语法错误


非常感谢您协助解决此问题。非常感谢你。


询问:

UPDATE
  bue
SET
  rgn_no = chapterassociation.rgn_no,
  chp_cd = chapterassociation.chp_cd
FROM
  bue
INNER JOIN
  chapterassociation
    ON  bue.work_state = chapterassociation.work_state
    AND bue.bgu_cd = chapterassociation.bgu_cd
WHERE
  bue.mbr_no IS NULL AND bue.chp_cd IS NULL
4

1 回答 1

1

在 PostgreSQL 中,指定要更新的表只需要在 UPDATE 子句中完成,例如UPDATE bue. FROM 子句仅适用于查询中引用的其他表。(如果您在 上进行自连接bue,您会在 FROM 子句中再次提及它,但您不是在这种情况下。)

您得到的第二个错误可能只是一个简单的语法错误。另一个棘手的问题是 JOIN/ON 语法不适合 FROM 子句,因此您必须将连接条件移至 WHERE 子句。尝试类似:

UPDATE
  bue
SET
  rgn_no = chapterassociation.rgn_no,
  chp_cd = chapterassociation.chp_cd
FROM
  chapterassociation
WHERE
  bue.mbr_no IS NULL AND bue.chp_cd IS NULL
  AND bue.work_state = chapterassociation.work_state
  AND bue.bgu_cd = chapterassociation.bgu_cd

请参阅http://www.postgresql.org/docs/current/interactive/sql-update.html

(注意至少我不知道如何将 JOIN/ON 放入 UPDATE 语句中......我可能会遗漏一些东西。)

于 2012-04-30T00:49:20.047 回答