質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

172閲覧

【MySQL文】似たようなデータのupdate文

phiilo_

総合スコア85

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2017/10/05 11:52

下記データベースがあるとします。

テーブル名:table
イメージ説明

例えば
USERID 503 の DRINKをUPDATEしたい場合
UPDATE table SET DRINK = 'いちご牛乳' WHERE USERID = 503;

とすれば、石橋さんのドリンクはいちご牛乳になるかと思います。
(間違っているかもしれませんがこれはできています)

USERID:500の山本さんの場合、3つありますが、一番下の焼酎を
いちご牛乳に変えてあげたいです。

どのようにUPDATE文を書いたら良いでしょうか??

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

USERID:500の山本さんの場合、3つありますが、一番下の焼酎を

いちご牛乳に変えてあげたいです。

まず、SQLの基本としてなんとなく表示されている表示順というものには
なんの意味もありません。明確なソート順をorder by で指定するなど
適切な処理をしない限り表示は順不同です
ですので「3番めの」的な考え方はできませんのでご注意下さい。
(もちろん今回の例の3番めという説明の仕方は合理的なのでかまわないのですが)

すでに回答があるように

SQL

1UPDATE テーブル SET DRINK = 'いちご牛乳' WHERE USERID = 500 and DRINK='焼酎';

としますが、同条件で2件以上ヒットする可能性はありますので、
全部変更していいならそのまま、もし1件だけ変更したいならLIMIT 1など
指定してあげて下さい。

なお、データ管理の原則としてデータベースのテーブルには特定のレコードをユニークに
指定するためにプライマリーキー(主キー)というデータを埋め込むのが基本です。
それさえあればWHERE 主キーカラム=xxx的な指示さえすれば確実にそのレコードのみ
編集することができます

投稿2017/10/05 12:26

yambejp

総合スコア114915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

phiilo_

2017/10/05 12:48

オートインクリメントで追加されていく順番に値を割り振って、その値をしていしてアップデートしたりするってことでしょうか。奥が深くてとても勉強になります。 いつも丁寧な回答ありがとうございます。また色々と教えてください!
yambejp

2017/10/05 13:03

そうですね、主キーにはオートインクリメントを利用すると便利です。 よくオートインクリメントを誤解している方がいますが あれは連番をつける仕組みではなく、あくまでも常に最大値より上方に 増えていくので必ずユニークな数値になるという仕組みです したがってトランザクションなどで処理するとよくオートインクリメントに 抜け番などが発生しますが、あまり気にする必要はありません。 もちろん、レコードの作成順に大きくなるような運用になるので レコードの上下関係をみる指標として利用するのはありですが、 これも必ずしも主キーの順番通りに時系列の処理がされるわけではないので 過信は禁物です
guest

0

ベストアンサー

SQL

1UPDATE table SET 2 DRINK = 'いちご牛乳' 3WHERE USERID = 500 4AND DRINK = '焼酎' ;

投稿2017/10/05 12:04

編集2017/10/05 20:18
Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問