人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PostgreSQLで複数のデータを一括修正

そんなに数は多くないのですが、

UPDATE shop SET pay = true WHERE id = 2289 AND id = 2291 AND id = 2292 AND id = 2348 AND id = 2604

こんなカンジで特定のIDのデータを一括修正したいのですが、エラーは返ってこないものの、なぜかFALSE(0)と値が入ってしまいます。この書き方の何がいけないのでしょうか


●質問者: goodbabies
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:postgreSQL SET いもの エラー データ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● うぃんど
●30ポイント ベストアンサー

id が 2289 であり2291でもあり2291でもあり2348でもあり2604でもある場合のみ、そのレコードのpayをtrueに変更するという命令になっていますので、そんなレコードはないという返事になっています

この場合はORを使います

UPDATE shop SET pay = true WHERE id = 2289 OR id = 2291 OR id = 2292 OR id = 2348 OR id = 2604

INを使うとスッキリします

UPDATE shop SET pay = true WHERE id IN (2289, 2291, 2292, 2348, 2604)
◎質問者からの返答

windofjulyさん!いつもありがとうございます!ばっちりでした!


2 ● fenstrial
●23ポイント

where句の中はandは誤りでorが正しいです。

◎質問者からの返答

orですね、了解しました


3 ● きゃづみぃ
●22ポイント

UPDATE する対象が抽出されませんからねぇ。

UPDATEの代わりにSELECT とすれば UPDATEされるレコードが わかります。

つまり

UPDATE shop SET pay = true WHERE id = 2289 AND id = 2291 AND id = 2292 AND id = 2348 AND id = 2604

SELECT pay FROM shop WHERE id = 2289 AND id = 2291 AND id = 2292 AND id = 2348 AND id = 2604

で 上記の場合、通常は inとか使います。

なので

UPDATE shop SET pay = true WHERE id in (2289,2291,2292,2348,2604)

とすればいいでしょう。


4 ● niwa-mikiho
●22ポイント

AND じゃなくて OR でないですか?

AND では

id が 2289 で、且つ id が 2291 で、且つ id が 2292 で、且つ id が 2348 で、且つ id が 2604

という意味に・・・

◎質問者からの返答

その通りでした!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ