- 16 Linux
- 7 MySQL
- 5 javascript
- 3 jQuery
- 1 画像
- 6 Google Chorme
- 4 xampp
- 1 css
- 1 PHP
- 3 Poderosa
- 1 LINE API
- 3 Windows
MySQL » 表示位置入れ替えクエリ
カラム「position」の値の順に表示させているデータに対し任意のレコードの表示位置を変更する。
【例】
五十音順に表示させるためにpositionの値を使って制御している環境下において
「田中→高野→高橋」の順番になっているのを「高野→高橋→田中」の順に変更する
row_id name position
1 斉藤 1
2 田中 2
3 高野 3
4 高橋 4
5 渡辺 5
↓
row_id name position
1 斉藤 1
2 田中 4
3 高野 2
4 高橋 3
5 渡辺 5
SET
@row_id = 2 # 対象レコードのid
,@current_position = 2 # 現在の表示位置
,@new_position = 4 # 変更後の表示位置
;
UPDATE
`table`
SET
`position` = CASE
WHEN
@current_position > @new_position
THEN
CASE
WHEN
`position` >= @new_position AND `position` < @current_position
THEN
`position` + 1
WHEN
`row_id` = @row_id
THEN
@new_position
ELSE
`position`
END
WHEN
@current_position < @new_position
THEN
CASE
WHEN
`position` > @current_position AND `position` <= @new_position
THEN
`position` - 1
WHEN
`row_id` = @row_id
THEN
@new_position
ELSE
`position`
END
ELSE
`position`
END
;