对于长度为k的PK列表:
listPK = [1,2,3 ... k]
我当前正在运行一个for循环,并查询数据库k次以检查该项目是否存在于数据库中。
List<bool> isPresent(List listPK)async{
final db = await database;
List<bool> output = List.filled(listPK.length, false)
for (var i = 0; i<listPk.length; i++){
List<Map> result = await db.query('elements', where: "id = ?", whereArgs: listPk[i]);
if (result[0] != null) {output[i] = true}
}
}
想知道是否有更有效的方法来做到这一点。我只想知道ID是否存在于数据库中。
最佳答案
使用WHERE ... IN
在一个 call 中检查所有ID。
String listQuery = listPK.join(', '); // "1, 2, 3, ..., k"
String query = 'SELECT * FROM table_name WHERE id IN ($listQuery);`;
List<Map> result = await db.rawQuery(query);
关于flutter - 检查SQFLITE数据库中是否存在PK列表中的哪些PK,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59805649/