我正在使用Ecto.Adapters.SQL
我在下面有这个查询
query = "select c.name, c.email from clients c where c.id in (1,2,3)"
然后我将查询放在我的Repo
result = SQL.query(Automessages.Repo, query , [])
之后我得到了这个结果(Map)有3行
{:ok,
%Mariaex.Result{columns: ["name", "email"], connection_id: nil,
last_insert_id: nil, num_rows: 3,
rows: [["Ana Silva", "name0@gmail.com"],
["Farias de melo", "name1@mail.net"],
["João da costa", "name3@hotmail.com"]]}}
我的问题是如何只获取行?
[["Ana Silva", "name0@gmail.com"],
["Farias de melo", "name1@mail.net"],
["João da costa", "name3@hotmail.com"]]
答案 0 :(得分:2)
您可以使用模式匹配来提取行:
{:ok, %{rows: rows}} = SQL.query(Automessages.Repo, qry , [])
# rows is now [["Ana Silva", ...], ...]
请注意,如果模式匹配失败,这将抛出MatchError
。如果您不想这样,可以使用case
来处理它:
case SQL.query(Automessages.Repo, qry , []) do
{:ok, %{rows: rows}} ->
# rows is available here
{:error, error} ->
# some error occurred
end