section
表:
db.execSQL("CREATE TABLE IF NOT EXISTS section (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT (255) NOT NULL, image TEXT (20) NOT NULL)");
我想交换 SQLite 数据库中同一个表的两行:
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL( "UPDATE section as s1 inner join section as s2 on (s1.id, s2.id) in (("+fromPosition+","+toPosition+"),("+toPosition+","+fromPosition+")) set s1.title=s2.title, s1.image=s2.image");
错误:
SQLiteException:接近“as”:语法错误(Sqlite代码1 SQLITE_ERROR):,编译时:UPDATE部分作为s1内部联接部分作为s2 on(s1.id,s2.id)in((6,7),(7) ,6)) set s1.title=s2.title, s1.image=s2.image,(操作系统错误 - 0:成功)
当尝试翻转行时,因为这看起来很相似,所以可能需要子查询;只需运行两个查询,首先将一个 ID 设置为远远领先于自动增量值,然后两轮交换。
否则您的查询可能永远不会成功,因为 ID 通常是
UNIQUE
。
通常这没什么好担心的,因为
SELECT
+ ORDER BY
。