1回のSQL文で複数のUPDATE
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);
";
尚、他にも方法はあるみたいなので、機会を見て検証する。
↓↓
関連記事
-
-
異なるVPS間でMySQLの接続を行う
異なるVPS間でMySQL接続を行った際のメモ。 さくらVPS(IP:111.1 ...
-
-
MySQLでWhere句を使ってカラム指定でデータコピー
MySQLで大量のデータを保存しているテーブルがあり、そのデータを絞った上で尚且 ...
-
-
直近のクエリで発行されたAUTO_INCREMENTの値を取得する
やりたかったことは、 新規登録(INSERT)なら、登録時のAUTO_INCRE ...
-
-
MySQLで加算しつつNULL値は0にする
いくつかのコードに対して投票を行い、 その合計値をスコアとして出したい。 ただ、 ...
-
-
MySQLでグループ毎に連番を設定する方法
MySQLでオートインクリメントを使用せずにグループ毎で連番を割り振りたかった。 ...
-
-
MySQLで1日の起点を変更する方法
MySQLで1日毎の集計を行う際、例えば2020/01/01のデータは2020/ ...
-
-
MySQLで全角半角を区別せずに検索する方法(collate utf8_unicode_ci)
あるシステムでMySQLの検索時に「WHERE test_column coll ...
-
-
MySQLでCSVから列を指定してインポート
MySQLでCSVからデータをインポートしたかった。またエクセル風にいうA列はi ...
-
-
phpmyadminからプロセスの停止
重たいSQL文を叩いた際、どうにも処理できず メモリ使用率が100%から下がらな ...
-
-
MySQLで1対多のデータ結合と条件検索
MySQLで飲食店舗テーブルと休業日テーブルがあり、1店舗に対して複数行の休業日 ...
- PREV
- metaタグでSEO
- NEXT
- モダンブラウザとレガシーブラウザ