为什么当我尝试交换同一个表的两行时会出现语法错误?

问题描述 投票:0回答:1

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:成功)

android sql sqlite
1个回答
0
投票

当尝试翻转行时,因为这看起来很相似,所以可能需要子查询;只需运行两个查询,首先将一个 ID 设置为远远领先于自动增量值,然后两轮交换
否则您的查询可能永远不会成功,因为 ID 通常是

UNIQUE

通常这没什么好担心的,因为

SELECT
+
ORDER BY

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.