如何执行复杂的 sql 语句并将结果放在数组中?
How to execute a complex sql statement and get the results in an array?
我想使用 SQLite.swift 执行相当复杂的 SQL 语句,并最好在数组中获取结果以用作表视图的数据源。该语句如下所示:
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 对象,但这不是最佳性能。
如有任何帮助,我们将不胜感激。
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)
我想使用 SQLite.swift 执行相当复杂的 SQL 语句,并最好在数组中获取结果以用作表视图的数据源。该语句如下所示:
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 对象,但这不是最佳性能。
如有任何帮助,我们将不胜感激。
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)