【发布时间】:2012-06-15 09:57:49
【问题描述】:
我正在尝试在更新单个项目的位置时更新列表中项目的位置,例如:
- 项目1
- 项目2
- 项目3
- 项目4
- 项目5
将 item5 移动到位置 2 会将列表更新为:
- 项目1
- item5 新位置
- item2 下移了一个]
- item3 下移了一个]
- item4 下移了一个]
.
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} 我想让 = 交换(这随后将允许在列表向上或向下移动位置时进行更新
【问题讨论】:
-
你得到什么错误?
-
我认为它确实执行了,但是,他对响应不满意。至少,我是这么读的。
-
数据库查询失败:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'CASE) WHERE position = 1 at line 3 附近使用的正确语法
-
CASE 语句只有
END,而不是END CASE。删除最后一个CASE -
好的,已经修复了 SQL,谢谢。现在我该怎么做后者,有人知道吗?
标签: mysql sql list if-statement