我试图在通过提交下拉框(其名称分配给 PHP 变量 $position)更新一个项目的位置后,根据它们的位置对列表重新排序。这是一个示例,位置由它们在列表中的顺序表示:
- 项目 1
- 项目 2
- 第 3 项
- 第 4 项
- 第 5 项
我正在使用以下 MySQL 查询:
UPDATE subjects SET
position = position + 1
WHERE position <= position AND position >= {$position};
如果我要将 Item5 移动到位置 2,此查询会将位置 2 到 4 的所有内容向下推一个位置,从而导致:
- 项目 1
- 项目 5 <<< 上移
- 项目 2
- 第 3 项
- 第 4 项
但是,如果我想反其道而行之,将一个项目向下移动,位置就需要减一(position = position - 1),并且 <= 和 >= 符号会互换。因此,我想知道如何在案例参数中执行此操作(相当于 if{} else if{})
最佳答案
如果您需要 if else,您可以使用 MySQL case
语句 (link)。它的基本工作原理如下:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
您可以根据需要嵌套它们。
关于MySQL Case 语句(if else if equivalent),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989567/