我正在使用 phonegap 制作 ios 和 android 应用程序。 我正在使用 WebSql 并且遇到了这个问题: 当您删除任何行时,我想重新排列名为“position”的列的值。 例如。 : 基表是:
╔═════╦══════════╗
║ ID ║ POSITION ║
╠═════╬══════════╣
║ 23 ║ 0 ║
║ 32 ║ 1 ║
║ 143 ║ 2 ║
║ 13 ║ 3 ║
╚═════╩══════════╝
如果我想删除例如位置为 1 的行,下面的行的位置会自动减一,例如 :
╔═════╦══════════╗
║ ID ║ POSITION ║
╠═════╬══════════╣
║ 23 ║ 0 ║
║ 143 ║ 1 ║
║ 13 ║ 2 ║
╚═════╩══════════╝
我的问题是:有没有办法在删除行后直接在 MySql 中执行此操作? 还是我需要在 javascript 中执行此操作,例如: - 删除我的行 - 查询所有表 - 循环他们改变他们的位置 - 更新行。
感谢您的帮助!
最佳答案
执行删除语句后,运行此更新语句以修改位置
的值
UPDATE tableName a
INNER JOIN
(
SELECT a.id, @rn := @rn + 1 New_position
FROM tableName a, (SELECT @rn := 0) b
ORDER BY a.Position
) b ON a.ID = b.ID
SET a.Position = b.New_Position
这是语句执行后的输出,
╔═════╦══════════╗
║ ID ║ POSITION ║
╠═════╬══════════╣
║ 23 ║ 1 ║
║ 143 ║ 2 ║
║ 13 ║ 3 ║
╚═════╩══════════╝
关于javascript - DELETE 后计算行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15719947/