Ecto原始sql快速生成单个结果

问题描述 投票:0回答:1

作为示例,我现在正在使用以下内容。

query = """
  SELECT reltuples
  AS approximate_row_count
  FROM pg_class
  WHERE relname = 'table';
"""

query
|> Repo.query!()
|> Map.get(:rows)
|> List.flatten()
|> List.first()
|> trunc()

它执行查询,接收结果

%Postgrex.Result{
  columns: ["approximate_row_count"],
  command: :select,
  connection_id: 17152,
  messages: [],
  num_rows: 1,
  rows: [[1494644.0]]
}

选择行[[1494644.0]]

展开列表[1494644.0]

获得第一个条目1494644.0

并将其转换为整数1494644

我觉得除了最后一步,必须有一个较短的方法。但是我还没有找到它。请注意,我不是在寻找一种将简单查询作为ecto查询而不是原始sql的方法。因为我在同一问题上使用了很多更复杂的查询。

elixir ecto
1个回答
0
投票
with [[result]] <- Repo.query!(query).rows, do: trunk(result)
© www.soinside.com 2019 - 2024. All rights reserved.