Ecto加入了返回的nil记录

时间:2018-01-20 20:01:06

标签: postgresql elixir ecto

我有两个ecto查询,比如query1和query2,现在我在这两个ecto查询之间执行完全连接,这样的事情

query1 |> join(:full, [a], b in subquery(query2), a.id == b.id)

一切正常,但有些记录以nil的形式返回,就像这样

[%user{}, %user{}, %user{}, nil, %user{}, %user{}, nil, %user{}, %user{}, nil]

我认为在ecto thread.

中也讨论了同样的问题

此ecto加入问题是否有一些解决方法。

1 个答案:

答案 0 :(得分:0)

那个Ecto线程是一个单独的问题。 :)

您正在使用完整联接,这意味着即使没有匹配项,也会返回联接的左侧和右侧。如果您使用:inner联接,它应该按预期工作:

query1 |> join(:inner, [a], b in subquery(query2), a.id == b.id)

如果您需要保持完整加入,可能您想在示例中同时返回ab

query1
|> join(:inner, [a], b in subquery(query2), a.id == b.id)
|> select([a, b], {a, b})

这样可以保证一个不是零。