勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

1回のSQL文で複数のUPDATE

      2014/07/03

INSERTはバルクインサートを使えばいいが、
UPDATEはあまり聞かないので調べたところ、
一括で出来るものを発見。

$sql = "
UPDATE テーブル名
SET calam_num=
(CASE calam_seq
WHEN seq_1 THEN num_1 WHEN seq_2 THEN num_2 ...
ELSE calam_num END);
";

でUPDATEできる。

WHENのところでseqを指定して、該当seqのnumを書き換える。

やりたかった事は、

----------
numが連番になっているところを途中のカラムを削除
↓↓
欠番が出るので、削除したカラム以降のnumを+1する
----------

で、↓↓でとりあえずは解決できた。

//欠番を埋める為、SQL文の中身をループで作成
for($i=1; $i<=count($sort_seq); $i++){
$sort_sql .= 'WHEN '.$sort_seq[$i-1].' THEN '.$i.' ';
}

//ソート順を欠番を埋めて並びかえ
$sql = "
UPDATE テーブル名
SET num=
(CASE seq
$sort_sql
ELSE num END);
";

尚、他にも方法はあるみたいなので、機会を見て検証する。

↓↓

http://d.hatena.ne.jp/IT7C/20100703/1278125750

 - MySQL

  関連記事

msyql-image
MySQLでWhere句をつけてdumpする

MySQLであるテーブルからWhere句をつけて、絞った結果をダンプさせたかった ...

msyql-image
phpMyAdminやAdminer上だけ文字化け

レンタルサーバーのプログラムでWebページ上では文字化けしていないのに、phpM ...

msyql-image
MySQLのエラーメール送付

MySQLエラーを取得してエラーメール送付。 <? error_repor ...

msyql-image
phpMyAdminより高速で軽量なAdminerが凄い

MySQLをGUIで管理できるphpMyAdmin。特に不満はないんだけど、もっ ...

images
PHPからMySQLにシリアライズしたデータを格納

アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...

msyql-image
コマンドでMySQLに郵便番号データを入れる

練習としてコマンドから郵便番号データを入れた際のメモ。 --------- 1: ...

msyql-image
MySQLで大文字小文字

半角英数字のみのフォームで入力した値を検索した際、 データに差異が発生。 [Aa ...

msyql-image
MySQLでグループ化したものを条件で絞る(HAVING)

正規化したテーブルがあってその中には idとtagのカラムがある。 でtagの方 ...

msyql-image
MySQLでIPアドレスを数値として入れると変になる

MySQLでIPアドレスをINET_ATON関数を用いてINT型に変換し格納する ...

msyql-image
MySQLで月別に集計を行う。あと日付時刻関数。

現在進行形でやっているデータ集計系だけど 新たな発見があったのでメモ。 ■日付時 ...