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

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

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

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

Q&A

解決済

3回答

1864閲覧

MySQLの複数のレコードのUPDATEについて。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

0グッド

0クリップ

投稿2020/08/26 05:46

編集2020/08/26 06:34

UPDATE table名 SET column名=値 WHERE id=n;

これを学習して理解したのですが、

イメージ説明

UPDATE一個ずつやらないで、
生産者名の振り分けを一括でできないかな、、と思ってググっていたのですが、

####バルクアップデート???

これが正解なのでしょうか。

試してみたのですが、シンタックスエラーが出てしまい

恐らく超基本的な事だと思いますがよろしくお願いいたします。とググりながら書いてたら今解決したのでw

先生の正解を教えてください。

#追記

イメージ説明

こういった感じで、生産者(maker)の値がNULLであり、
それぞれ名前をUPDATEで一括で振り分ける場合

SQL

1UPDATE my_items SET 2maker = case id WHEN '2' THEN 'ヤマウチ' WHEN '3' THEN 'オオツカ' WHEN '4' THEN 'シマダ' WHEN '5' THEN 'ジョウノウチ' WHEN '6' THEN 'アベ' END WHERE id between 2 and 6;

としました。

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

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

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

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

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

sazi

2020/08/26 05:51 編集

今の質問内容では、回答できないと思いますので、解決したSQLを追記願います。
m.ts10806

2020/08/26 05:53

1つのゴールに向かうために道は1つではないので「ただ1つの正解」を求めているのなら出てこないと思います。 それに多くの場合はDBだけで運用することってありません。アプリケーションの設計次第ではないでしょうか。
guest

回答3

0

そのような分岐が発生するなら、その情報をテーブル化し、そのテーブル経由で更新するようにします。

<maker_list>

IDMAKER
2ヤマウチ
3オオツカ
4シマダ
5ジョウノウチ
6アベ

SQL

1UPDATE my_items item 2 inner join maker_list list 3 on item.ID=list.ID 4SET item.maker=list.maker

投稿2020/08/26 06:53

sazi

総合スコア25206

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

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

退会済みユーザー

退会済みユーザー

2020/08/26 06:58

ありがとうございます、テーブル化して結びつけがちょうど今出てきました!!勉強させていただきます。
guest

0

ベストアンサー

同じメーカー名入れればいいなら普通にwhereの指定

SQL

1UPDATE table名 SET maker='所定のメーカー' WHERE id between 2 and 6;

投稿2020/08/26 05:56

編集2020/08/26 06:28
yambejp

総合スコア115010

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

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

yambejp

2020/08/26 06:35

updateのバルク処理の仕方を念の為 //元データ create table tbl(id int primary key,maker varchar(20) null); insert into tbl values(1,'1のメーカー'),(2,null),(3,'3のメーカーorg'),(4,null),(5,null),(6,null),(7,'7のメーカー');
yambejp

2020/08/26 06:37 編集

//2~5までのmakerがnullの場合だけupdate UPDATE tbl set maker=COALESCE(ELT(FIELD(id,2,3,4,5),'2のメーカー','3のメーカー','4のメーカー','5のメーカー'),maker) where maker is null //同makerを強制上書き UPDATE tbl set maker=COALESCE(ELT(FIELD(id,2,3,4,5),'2のメーカー','3のメーカー','4のメーカー','5のメーカー'),maker)
退会済みユーザー

退会済みユーザー

2020/08/26 06:44

>yambejpさん ありがとうございます。 どちらも実行してみたらできました。
guest

0

UPDATE my_items SET
maker = case id WHEN '2' THEN 'ヤマウチ' WHEN '3' THEN 'オオツカ' WHEN '4' THEN 'シマダ' WHEN '5' THEN 'ジョウノウチ' WHEN '6' THEN 'アベ' END WHERE id between 2 and 6;

投稿2020/08/26 06:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問