在DELETE之后计算行顺序

时间:2013-03-30 15:02:54

标签: 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中执行此操作,例如:   - 删除我的行   - 查询所有表格   - 循环他们改变他们的位置   - 更新行。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

删除语句执行后

运行此更新语句以修改position

的值
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

这是语句执行后的OUTPUT,

╔═════╦══════════╗
║ ID  ║ POSITION ║
╠═════╬══════════╣
║  23 ║        1 ║
║ 143 ║        2 ║
║  13 ║        3 ║
╚═════╩══════════╝

答案 1 :(得分:0)

最后,对于我的情况,使用localStorage比WebSql更容易和更好。