javascript - DELETE 后计算行顺序

标签 javascript mysql sql sql-update sql-delete

我正在使用 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/

相关文章:

JavaScript 正则表达式性能。

javascript - 查找生成警报的窗口的 ID

javascript - jQuery 时间以前

Mysql查询日期之间的查询

mysql - 无法在我的用户帐户下运行 mysql

MySQL JSON_OBJECT + CONCAT & GROUP_CONCAT 作为别名 & 截断/最大长度

sql - 过滤和排序 SQL 查询以重新创建嵌套结构

mysql - SQL 计数查询的性能改进

mysql - ORA-00979 : not a GROUP BY expression for Oracle but not valid for MySQL in context of clause difference

javascript - div 内容不随父级移动