通过 haskell persist 使用 DISTINCT 关键字

Posted

技术标签:

【中文标题】通过 haskell persist 使用 DISTINCT 关键字【英文标题】:Usage of the DISTINCT keyword through haskell persist 【发布时间】:2021-04-23 09:03:25 【问题描述】:

Haskell 中是否有某种方法可以持久执行select distinct (column_name_1, column_name_2) ...。请注意,我并不是说唯一,我真的想为这些列选择不同的记录。之后我当然可以执行一些过滤魔术,但我想让数据库(在我的情况下为 postgres)解决它,但我并没有在文档中真正找到它。

卡斯帕

【问题讨论】:

【参考方案1】:

persistent repo 的搜索表明DISTINCT 关键字没有用于任何有意义的上下文,这意味着persistent 根本不支持DISTINCT 查询。

这是因为持久化的明确设计目标是backend-agnostic,而许多非 SQL 后端本身并不支持某些 SQL 功能,例如不同的查询和连接。

我打开了Github issue 来查询这个问题,持久性维护者马特·帕森斯(Matt Parsons)回复推荐了Esqueleto 包,它是在持久性之上编写的,旨在提供特定于 SQL 的功能。

【讨论】:

以上是关于通过 haskell persist 使用 DISTINCT 关键字的主要内容,如果未能解决你的问题,请参考以下文章

“类型变量不明确”在 Haskell Yesod 中使用 Persistent

Haskell Persistent 加入 Esqueleto

Haskell Persistent 上的 CRUD 模式

Haskell的Persistent sometmes返回500内部服务器错误

Haskell Persistent:可以按包含指定值的字段选择所有行

使用 Persistent 输入与数据库的关系