0

我想使用SQLite.swift执行一个相当复杂的 SQL 语句,并最好将结果放在一个数组中,以用作 tableview 的数据源。该声明如下所示:

SELECT defindex, AVG(price) FROM prices WHERE quality = 5 AND price_index != 0 GROUP BY defindex ORDER BY AVG(price) DESC

我正在研究 SQLite.swift 文档以找出如何正确执行此操作,但我找不到方法。我可以在数据库上调用 prepare 并遍历 Statement 对象,但这不是最佳性能。

任何帮助,将不胜感激。

4

1 回答 1

7

Swift 中的大多数序列都可以通过简单地将序列本身包装在一个数组中来解压缩到一个数组中:

let stmt = db.prepare(
    "SELECT defindex, AVG(price) FROM prices " +
    "WHERE quality = 5 AND price_index != 0 " +
    "GROUP BY defindex " +
    "ORDER BY AVG(price) DESC"
)
let rows = Array(stmt)

在这一点上,从这里构建数据源应该相对简单。

如果您使用类型安全的 API,它将如下所示:

let query = prices.select(defindex, average(price))
                  .filter(quality == 5 && price_index != 0)
                  .group(defindex)
                  .order(average(price).desc)
let rows = Array(query)
于 2015-05-01T15:04:20.713 回答