如果不使用片段,则在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}