Ionic Sqlite SELECT IN 语句没有 return 正确的结果

Ionic Sqlite SELECT IN statement doesn't return correct results

我有使用 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。

当我 运行 上面的语句时,它不会 return 这两个 ID 为 1 和 3 的实体。相反它 return undefined。我在 sqlite 控制台中 运行 完全相同的语句 SELECT * FROM table_a WHERE id IN (1,3); 并且这有效。它正确显示了两个实体。我的问题是为什么上面的 Sqlite SELECT IN 查询不能正常工作以及我应该如何正确地在参数中添加许多值(值 1 和 3 的数组位于何处)?我使用它(SELECT 在查询中)错了吗?

当我 运行 以上查询参数为:

我找到了两个解决方法:

  1. 将数组值连接为字符串(不是很好的解决方案):
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
    });
  1. SELECT IN 查询中使用 sql SELECT如果可以从数据库 table 中获取这些值,这是一个很好的解决方案) :
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
    });