Android sql 查询中的异常在 DB Browser 中运行正常
Android exception in sql query that runs fines in DB Browser
当运行下面的查询在Android
select *
from EICRChecklistItems
where (Sect, S_Sect, SS_Sect) in (
select Sect, S_Sect, SS_Sect
from EICRCheckList
where Version=2018
order by id
)
order by id
我得到异常:
android.database.sqlite.SQLiteException: near ",": syntax error (code
1)
列 Sect
、S_Sect
和 SS_Sect
都定义为 integer
。
但是当 运行 在 DB Browser 上针对同一数据库的副本时它会正确执行
任何关于可能导致此问题的指示都将不胜感激。
private var EICR_CHECK_ITEMS_TABLE = "EICRChecklistItems"
private var EICR_CHECKLIST_TABLE = "EICRCheckList"
val cursor1: Cursor = writableDatabase.rawQuery(
"select * from $EICR_CHECK_ITEMS_TABLE where (Sect, S_Sect, SS_Sect) in (select Sect, S_Sect, SS_Sect from $EICR_CHECKLIST_TABLE where Version='2018' order by id) order by id", null)
由于您的 SQLite 版本早于 3.15.0,您不能使用 ROW VALUES
,您可以使用 EXISTS
代替运算符 IN
:
SELECT ei.*
FROM EICRChecklistItems ei
WHERE EXISTS (
SELECT 1 FROM EICRCheckList el
WHERE el.Version = 2018
AND el.Sect = ei.Sect AND el.S_Sect = ei.S_Sect AND el.SS_Sect = ei.SS_Sect
)
ORDER BY ei.id
请注意,代码中子查询中的 ORDER BY
子句实际上没有用。
当运行下面的查询在Android
select *
from EICRChecklistItems
where (Sect, S_Sect, SS_Sect) in (
select Sect, S_Sect, SS_Sect
from EICRCheckList
where Version=2018
order by id
)
order by id
我得到异常:
android.database.sqlite.SQLiteException: near ",": syntax error (code 1)
列 Sect
、S_Sect
和 SS_Sect
都定义为 integer
。
但是当 运行 在 DB Browser 上针对同一数据库的副本时它会正确执行
任何关于可能导致此问题的指示都将不胜感激。
private var EICR_CHECK_ITEMS_TABLE = "EICRChecklistItems"
private var EICR_CHECKLIST_TABLE = "EICRCheckList"
val cursor1: Cursor = writableDatabase.rawQuery(
"select * from $EICR_CHECK_ITEMS_TABLE where (Sect, S_Sect, SS_Sect) in (select Sect, S_Sect, SS_Sect from $EICR_CHECKLIST_TABLE where Version='2018' order by id) order by id", null)
由于您的 SQLite 版本早于 3.15.0,您不能使用 ROW VALUES
,您可以使用 EXISTS
代替运算符 IN
:
SELECT ei.*
FROM EICRChecklistItems ei
WHERE EXISTS (
SELECT 1 FROM EICRCheckList el
WHERE el.Version = 2018
AND el.Sect = ei.Sect AND el.S_Sect = ei.S_Sect AND el.SS_Sect = ei.SS_Sect
)
ORDER BY ei.id
请注意,代码中子查询中的 ORDER BY
子句实际上没有用。