作为示例,我现在正在使用以下内容。
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的方法。因为我在同一问题上使用了很多更复杂的查询。
with [[result]] <- Repo.query!(query).rows,
do: trunk(result)