flutter - sqflite IN 运算符与 AND 运算符
问题描述
我有以下查询,该查询从员工表中选择,其中名称为“max”,ID 不在 123 和 444 中。不在 ID 中可以在未来增长。但我收到错误
错误
(8023):[错误:flutter/lib/ui/ui_dart_state.cc(148)]未处理的异常:DatabaseException(靠近“?”:语法错误(代码1 SQLITE_ERROR):,编译时:
询问
List<String> a = [];
a.add("123");
a.add("444");
var table = await mydb.rawQuery(
"SELECT value from employee WHERE employeename = ? AND id NOT IN ? ORDER BY timestamp DESC",
["max", a]);
解决方案
如果LIST
是不可预测的,一种方法是您可以使用JOIN
创建所需值的 select 语句NOT IN
。下面是一个示例。
void main() {
List<String> a = [];
a.add("123");
a.add("444");
var select =
'SELECT value from employee WHERE employeename = ? AND id NOT IN (\'' +
(a.join('\',\'')).toString() +
'\') ORDER BY timestamp DESC';
var table = await mydb.rawQuery(select, ["max"]);
}
如果您打印变量选择,您将得到
SELECT value from employee WHERE employeename = ? AND id NOT IN ('123','444')
ORDER BY timestamp DESC.
然后你可以将上面的语句传递给rawquery
并得到你的结果。
PS:相应地使用您的单引号和双引号。
推荐阅读
- javascript - Javascript自定义按字符串属性排序
- python - 使用 Airflow 的 TriggerDagRunOperator 时,目标 DAG 运行被标记为“成功”,而没有完成子任务
- javascript - 为什么 node.js 中的异步函数不是异步的?
- opencv - 如何在考虑相机校准的情况下执行 2d 到 3d 重建
- javascript - 如何将点击事件传递或冒泡到另一层?
- database - 选择 Cosmos 分区键
- mysql - 是否可以禁止 MySQL 行修改?
- python - 递归导入语句
- logic - 如何使用与门和或门创建与非门?
- python - 分配/分配算法