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


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

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

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/10/05 09:29:29
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント30pt

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)
id:goodbabies

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

2010/10/05 09:28:48

その他の回答3件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149ここでベストアンサー

ポイント30pt

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)
id:goodbabies

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

2010/10/05 09:28:48
id:fenstrial No.2

回答回数57ベストアンサー獲得回数14

ポイント23pt

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

id:goodbabies

orですね、了解しました

2010/10/05 09:29:04
id:taknt No.3

回答回数13539ベストアンサー獲得回数1198

ポイント22pt

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)

とすればいいでしょう。

id:niwa-mikiho No.4

回答回数516ベストアンサー獲得回数40

ポイント22pt

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

AND では

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

という意味に・・・

id:goodbabies

その通りでした!

2010/10/05 09:29:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません