みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLで1つのレコードだけに処理をする方法

MySQL初心者です。よろしくお願いします。

以下のようなテーブルがあったとして、UPDATEでレコード1つだけnumberから特定の数をマイナスしたいのですが、どうもやり方がわかりません。

id | name | number
1 aaa 100
2 bbb 200
3 ccc 300
3 ccc 300
2 bbb 200


例えば、id=2のレコードの中から1つだけ、numberからマイナスするといった処理を行いたい場合、以下のSQL文だとidが2のものすべてから数がマイナスされてしまいます。

UPDATE table SET number = number-50 WHERE id=2;

すべてのレコードからマイナスするのではなく、id=2のレコードの中から1つだけマイナスしたいんです。。。

これをid=2の中で1つ目のレコードからだけマイナスする、といったようにうまく1つのレコードからマイナスする方法をご教示いただけるとありがたいです。


つたない文章で恐縮ですが、どうぞよろしくお願いいたします。

投稿日時 - 2012-09-26 12:15:44

QNo.7717862

すぐに回答ほしいです

質問者が選んだベストアンサー

>id=2のレコードの中から1つだけマイナスしたいんです。。。

できるか否かをききたいなら、limitで制限すればできます

update table set number=number-50 where id=2 limit 1;

しかし、データを特定しないでアップデートをするなんて愚の骨頂です。
運用方法を改めた方がよいでしょう。

投稿日時 - 2012-09-26 12:29:22

お礼

早速のご回答ありがとうございます。
limitでいけました。

ご指摘ありがとうございました。
もっと勉強して運用方法も改めようと思います。

投稿日時 - 2012-09-26 15:12:53

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

1レコードをユニークに特定できる情報が無いのであれば、基本的には無理です。
各レコードにユニークIDを振るなどデータの持ち方を見直した方がいいと思います。

投稿日時 - 2012-09-26 13:33:30

お礼

ご回答ありがとうございます。
ユニークなIDのカラムを増やす等、運用方法も改めてみようと思います。

投稿日時 - 2012-09-26 15:13:46

あなたにオススメの質問