我正在使用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中执行此操作,例如: - 删除我的行 - 查询所有表格 - 循环他们改变他们的位置 - 更新行。
感谢您的帮助!
答案 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更容易和更好。