users_import
CSV ファイルを解析してインポートするテーブルがあります。そのテーブルを使用して、ユーザーが既に存在する場合はテーブルを UPDATE し、users
存在しない場合は INSERT します。(これは実際には、私がやろうとしているもっと複雑なことの非常に単純化された例です。)
私はこれに非常に似た何かをしようとしています: https://stackoverflow.com/a/8702291/912717
テーブルの定義とクエリは次のとおりです。
CREATE TABLE users (
id INTEGER NOT NULL UNIQUE PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE users_import (
id INTEGER NOT NULL UNIQUE PRIMARY KEY,
name TEXT NOT NULL
);
WITH upsert AS (
UPDATE users AS u
SET
name = i.name
FROM users_import AS i
WHERE u.id = i.id
RETURNING *
)
INSERT INTO users (name)
SELECT id, name
FROM users_import
WHERE NOT EXISTS (SELECT 1 FROM upsert WHERE upsert.id = users_import.id);
そのクエリは次のエラーを返します。
psql:test.sql:23: ERROR: column reference "id" is ambiguous
LINE 11: WHERE NOT EXISTS (SELECT 1 FROM upsert WHERE upsert.id = us...
^
あいまいな理由id
とその原因は何ですか?