単一のアイテムの位置を更新するときに、リストからアイテムの位置を更新しようとしています。例:
- item1
- item2
- item3
- item4
- item5
item5を位置2に移動すると、リストが次のように更新されます。
- item1
- item5<<新しい位置
- item2<<[ 1つ下に移動]
- item3<<[ 1つ下に移動]
- item4<<[ 1つ下に移動]
。
UPDATE subjects SET
position = (CASE WHEN position < {$position} THEN position + 1
WHEN position > {$position} THEN position - 1 else position END CASE)
WHERE position <= position AND position >= {$position};
このSQLクエリは機能しません。ただし、IF position <{$ position}の場合は、現在のWHERE句を使用しますが、position> {$ position}の場合は、<=と>=を入れ替えます。 (これにより、リストの位置を上下に移動するときに更新できるようになります