如何在 Diesel 中编写 GROUP BY 或 HAVING 子句?

How do I write a GROUP BY or HAVING clause in Diesel?

提问人:user1842633 提问时间:10/22/2020 最后编辑:rsalmeiuser1842633 更新时间:5/10/2022 访问量:1751

问:

我正在尝试将以下 SQL 查询转换为相应的 Rust Diesel 代码:

SELECT COUNT(*)
FROM BookStore
WHERE BookName IN ('Lord of the Rings', 'Hobbit')
GROUP BY StoreId
HAVING COUNT(DISTINCT BookName) = 2

到目前为止,我能够将其翻译成:

let bookNames = vec!["Lord of the Rings", "Hobbit"];

let subquery = bookStores::table
.select(count_star())
.filter(bookName.eq_any(bookNames));

我相信可以翻译为:

SELECT COUNT(*)
FROM BookStore
WHERE BookName IN ('Lord of the Rings', 'Hobbit')

我无法找到 和 SQL 子句的任何 Diesel 等效项。这些条款甚至在柴油中存在吗?GROUP BYHAVING

分组依据 拥有 铁锈柴油

评论

2赞 Shepmaster 10/22/2020
github.com/diesel-rs/diesel/issues/210
0赞 user1842633 10/22/2020
谢谢你的链接。似乎添加了一个分组依据子句,但似乎还没有实现 having 子句。情况仍然如此,还是我错过了帖子中的一些信息?
2赞 Shepmaster 10/22/2020
似乎添加了一个 group by 子句——它没有:“此函数不会生成 GROUP BY SQL 语句,因为它对已经从数据库加载的数据结构进行操作”
2赞 weiznich 10/22/2020
关于事物的当前状态,我只想补充几句话: * 在 1.x 版本系列中,默认情况下隐藏了这个功能(读作“不是受支持的公共 API 的一部分”),它允许指定 group by 子句 * 2.0(下一个版本)可能会引入至少一些对 group by 子句的官方支持, 因此,链接的问题提到已经实现了某些内容 * 任何版本都不支持 having 子句
0赞 hansTheFranz 12/28/2020
你介意分享吗?count_star()

答: 暂无答案