sqlite - 离子 Sqlite SELECT IN 语句不返回正确的结果
问题描述
我有使用 Sqlite 插件的离子移动应用程序。我尝试运行以下查询:
this.db.executeSql('SELECT * FROM foo_table WHERE id IN (?)', [[1, 3]])
.then(data => {
console.log(data.rows.item(0));
console.log(data.rows.item(1));
// Do something here
});
我故意留下显示数据库初始化代码,因为它是不必要的,因为它可以与同一文件中的其他方法一起正常工作。在数据库中,我在table_foo中有两个实体,它们包含一些特定的数据,每个实体都有 id。
当我运行上面的语句时,它不会返回 id 为 1 和 3 的这两个实体。而是返回undefined
. 我在 sqlite 控制台中运行完全相同的语句,这是可行的SELECT * FROM table_a WHERE id IN (1,3);
。它正确显示了这两个实体。我的问题是为什么SELECT IN
上面的 Sqlite 查询不能正常工作以及我应该如何在 params 中正确添加许多值(值 1 和 3 的数组位于哪里)?我使用它(SELECT IN 查询)错了吗?
当我使用参数运行上述查询时:
[1]
-> 作品[[1]]
-> 作品[[1, 3]]
-> 不起作用[1, 3]
-> 很明显的错误
解决方案
我为此找到了两种解决方法:
- 将数组值连接为字符串(不是好的解决方案):
const ids = [1, 3];
this.db.executeSql('SELECT * FROM foo_table WHERE id IN (' + ids.toString()')', [])
.then(data => {
console.log(data.rows.item(0));
console.log(data.rows.item(1));
// Do something here
});
SELECT
在SELECT IN
查询中使用 sql (如果您可以从数据库表中获取这些值,这是一个很好的解决方案):
this.db.executeSql('SELECT * FROM foo_table_a WHERE id IN (SELECT id FROM foo_table_b)', [])
.then(data => {
console.log(data.rows.item(0));
console.log(data.rows.item(1));
// Do something here
});
推荐阅读
- node.js - Primordials is not defined
- c# - Signalr 从服务器向客户端发送消息 c# 执行请求时发生未处理的异常
- python - Async exception handling works when using ensure_future but not when using run_until_complete
- react-native - Dynamic data not displaying in react native?
- elasticsearch - Elasticsearch get average
- angular - 有没有办法将 Angular 中的 UI Umbraco 用作独立的前端?
- pandas - Find Maximum Value in Column Pandas
- spring - 您可以在 Spring Boot 实体中使用注释来加密密码吗
- arrays - 从对象中取出一些字段键和值并转换为列结构,在MongoDB中
- amazon-web-services - 如何根据 Parquet 输入配置 PySpark 作业?