【问题标题】:Correlated subqueries using Ecto使用 Ecto 的相关子查询
【发布时间】:2018-01-14 18:24:47
【问题描述】:

您将如何在Ecto 中编写相关子查询?

例如,什么相当于 SQL SELECT 查询:

--Heaviest Lemmings per Group
SELECT ld.group_name, ld.id, ld.name, ld.weight
FROM lemming_data ld
WHERE weight = (
    SELECT max(weight)
    FROM lemming_data
    WHERE group = ld.group_name
);

Ecto 语法中?我不确定如何引用外部查询的group_name

【问题讨论】:

    标签: sql elixir ecto correlated-subquery


    【解决方案1】:

    在不使用片段的情况下,Ecto 中不可能有共同相关的子查询。所以它会是这样的:

    from ld in "lemming_data",
      where: ld.weight in fragment("(SELECT max(weight) FROM lemming_data WHERE group = ?)", ld.group_name),
      select: ld # or {ld.group_name, ld.id, ld.name, ld.weight}
    

    或:

    from ld in "lemming_data",
      where: fragment("? = (SELECT max(weight) FROM lemming_data WHERE group = ?)", ld.weight, ld.group_name),
      select: ld # or {ld.group_name, ld.id, ld.name, ld.weight}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 2021-01-09
      • 1970-01-01
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多