【问题标题】:Vapor 3/Fluent for Postgres: How do I make a SELECT DISTINCT query?Vapor 3/Fluent for Postgres:如何进行 SELECT DISTINCT 查询?
【发布时间】:2019-04-01 11:30:14
【问题描述】:

我想查询一个模型,以便 Fluent 生成如下所示的 SQL:

SELECT DISTINCT ON(<my columns>) * FROM my_table...

我该怎么做?

【问题讨论】:

  • 如果你在你的项目中搜索,有一个“不同的”协议,但我看不出如何使用它。在文档赶上之前,您可以尝试原始查询。
  • @Nick 是的,看到了那个协议,不知道如何使用它:/ Raw 我认为需要我编写一堆代码,所以尽量避免它......但在 Twitter 上问了一些 Vapor 的人,所以也许他们会有一些想法?

标签: postgresql fluent vapor


【解决方案1】:

叹息。

因此,最终不得不使用原始查询。你也可以这样做:

let distinctModels = req.withPooledConnection(to: .psql) { (conn) -> Future<[MyModel]> in
    conn.raw("SELECT DISTINCT ON(<my columns>) * FROM <my_table> INNER JOIN <another_table> ON <some_condition> WHERE <conditions>")
        .all(decoding: MyModel.self)
}

其中req 的类型为RequestwithPooledConnection 函数将返回您的模型的未来 - 只要确保您解码它们!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2019-01-27
    • 2013-01-05
    • 1970-01-01
    • 2016-01-03
    • 2014-09-21
    相关资源
    最近更新 更多