前提・実現したいこと
更新前の値を取りたい
発生している問題・エラーメッセージ
postgresqlのCONFLICT(UPSERT)でテーブルを更新したのち、
更新前の値をRETURNING句で取りたく、以下のようにしましたがこのサブクエリが
複数行を返すようで、エラーが出てしまいます
INSERT INTO test VALUES ('001','hoge1', 'hage1'),('002','hoge2', 'hage2'),('003','hoge3', 'hage3') ON CONFLICT ON CONSTRAINT testsss DO UPDATE SET code = EXCLUDED.code, hoge = EXCLUDED.hoge, hage = EXCLUDED.hage, RETURNING id, hage, COALESCE((SELECT hoage FROM test WHERE id = id), '') AS before_hoge
ERROR: more than one row returned by a subquery used as an expression at
例えば以下のようにid決め打ち(111)で行うと、正しく表示されます
INSERT INTO test {$column} VALUES {$holder} ON CONFLICT ON CONSTRAINT testsss DO UPDATE SET code = EXCLUDED.code, hoge = EXCLUDED.hoge, hage = EXCLUDED.hage, RETURNING id, hage, COALESCE((SELECT hoage FROM test WHERE id = 111), '') AS before_hoge
idに別名をつけてみたり色々しましたが正しく取得できません
postgres (PostgreSQL) 13.4
です
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/21 04:25 編集
2021/12/21 01:32 編集
2021/10/21 04:26
2021/10/21 04:31
2021/10/21 04:34
2021/10/21 04:39
2021/10/21 05:01 編集
2021/10/21 04:59 編集
2021/10/21 05:12 編集
2021/10/21 05:26
2021/10/21 05:32 編集
2021/10/21 05:37
2021/10/21 05:44 編集
2021/10/21 06:06 編集
2021/10/21 07:51 編集
退会済みユーザー
2021/10/22 08:07