1

我正在使用 phonegap 制作一个 ios 和 android 应用程序。我正在使用 WebSql,我遇到了这个问题:当您删除任何行时,我想重新排列名为“位置”的列的值。例如。:基表是:

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

例如,如果我想删除位置为 1 的行,则下面的行的位置会自动减一,例如:

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

我的问题是:有没有办法在删除行后直接在 MySql 中执行此操作?还是我需要在 javascript 中执行此操作,例如: - 删除我的行 - 查询所有表 - 循环它们以更改它们的位置 - 更新行。

感谢帮助 !

4

2 回答 2

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

这是语句执行后的输出,

╔═════╦══════════╗
║ ID  ║ POSITION ║
╠═════╬══════════╣
║  23 ║        1 ║
║ 143 ║        2 ║
║  13 ║        3 ║
╚═════╩══════════╝
于 2013-03-30T15:10:47.277 回答
0

Finally for my case, using localStorage was easier and better than WebSql.

于 2013-04-03T09:47:55.743 回答