【问题标题】:Why isn't my sql query in sqlite/sqlbrite not working with a second condition/multiple WHERE clauses?为什么我在 sqlite/sqlbrite 中的 sql 查询不能使用第二个条件/多个 WHERE 子句?
【发布时间】:2020-12-03 21:39:52
【问题描述】:

我对我的 Sqlite/Brite 数据库有一个查询,它需要两个条件。一个用于检查选定的季度,另一个用于确保操作属性不是“删除”。当我只有 WHERE 子句来检查所选季度时,我得到了我想要的所有数据。当我添加 WHERE 子句以检查以确保它没有“已删除”属性时,什么都没有返回。没有任何东西应该有一个已删除的属性,因此所有相同的数据都应该返回,但事实并非如此。这是为什么呢?

这是导致我出现问题的功能

 Stream<List<dynamic>> getTransaction() async* {
    List _transaction = [];
    final sessionData = await getSession();
    final db = await initDatabase();
    yield* db.createQuery(
        "transactions",
        where: 'action != "delete" AND transaction_quarter = ? ',
        whereArgs: [sessionData['selected_quarter']]
    ).mapToList((row) => TransModel.Transaction.fromMap(row));
  }

【问题讨论】:

  • "deleted""delete"?发布示例数据以澄清。
  • 删除。它将确保每条记录上都没有“删除”标志。我可以稍后发布一些示例数据。

标签: sqlite flutter sqlbrite


【解决方案1】:

您的 SQL 中似乎有 "delete"。我想你需要'delete'。它们绝对不一样。

【讨论】:

    【解决方案2】:

    您可以尝试在 args 中传递“删除”

    db.createQuery(
            "transactions",
            where: 'action != ? AND transaction_quarter = ? ',
            whereArgs: ["delete", sessionData['selected_quarter']]
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2019-02-09
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      相关资源
      最近更新 更多