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 句で再度言及しますが、この場合はそうではありません。)

2 番目に表示されるエラーは、単純な構文エラーである可能性があります。もう 1 つのトリッキーな点は、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を参照してください。

(NB 少なくとも、JOIN/ON を UPDATE ステートメントに入れる方法がわかりません...何か不足している可能性があります。)

于 2012-04-30T00:49:20.047 に答える