我试图通过提交一个下拉框(其名称分配给PHP变量$ position)更新一个项目的位置,根据他们的位置重新排序列表。这是一个例子,其中的位置由列表中的顺序表示:
我正在使用以下MySQL查询:
UPDATE subjects SET
position = position + 1
WHERE position <= position AND position >= {$position};
如果我要将Item5移动到位置2,则此查询会将位置2到4的所有内容向下推动一个位置,从而导致:
但是,如果我希望相反并向下移动一个项目,则该位置需要减少一个(位置=位置-1),并且&lt; =和&gt; =符号将交换。因此,我想知道如何在案例论证中做到这一点(相当于if {} else if {})
答案 0 :(得分:4)
如果您需要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
您可以根据需要嵌套它们。
答案 1 :(得分:0)
Plz试试吧
update subjects set position=(CASE
WHEN search_condition THEN
position+1
WHEN search_condition THEN
postion-1
else
postion
END CASE) WHERE position <= position AND position >= {$position} AND menu_type = '{$menu_type}'";