MySQL Case 语句(if else if equivalent)

标签 mysql position case

我试图在通过提交下拉框(其名称分配给 PHP 变量 $position)更新一个项目的位置后,根据它们的位置对列表重新排序。这是一个示例,位置由它们在列表中的顺序表示:

  1. 项目 1
  2. 项目 2
  3. 第 3 项
  4. 第 4 项
  5. 第 5 项

我正在使用以下 MySQL 查询:

UPDATE subjects SET 
position = position + 1 
WHERE position <= position AND position >= {$position};

如果我要将 Item5 移动到位置 2,此查询会将位置 2 到 4 的所有内容向下推一个位置,从而导致:

  1. 项目 1
  2. 项目 5 <<< 上移
  3. 项目 2
  4. 第 3 项
  5. 第 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/

相关文章:

MySQL保存错误没有错误

html - div 定位不正确

html - 粘滞位置 : Header scrolled away after a while

sql - 以更高效的方式从 PostgreSQL 数据库中检索数据

mysql - sql查询案例示例

mysql - Django-Memsql初始迁移报错

php - 如何根据值扩展 implode() 以获取单独的字符串

php - MYSQL/PHP 在保持数字顺序的同时向上或向下移动对象的顺序

html - 我想要有人解决我的查询,我想要 2 行 3 张图片

case - 大写和小写在 Aws dynamoDB 中的 Contains 中不起作用?