gpt4 book ai didi

sql - 获取每个组的第一条记录列表

转载 作者:行者123 更新时间:2023-11-29 12:45:35 30 4
gpt4 key购买 nike

我有一个包含以下列的 Log 模型:

["id", "username", "event", "parameters", "extras", "created_at", "updated_at"]

我有索引 created_atusername
现在,我想获取由 created_at 排序的每个 username 的第一个日志。

执行此操作的一种方法是为每个用户名运行以下查询:

log = Log.where("username = :username", username: username).order(:created_at).first

但这显然查询了数据库很多次(等于用户名的数量)。有什么方法可以只进行一次数据库查询吗?

最佳答案

DISTINCT ON 的另一种情况:

SELECT DISTINCT ON (username) *
FROM log
ORDER BY username, created_at;

为每个 username 的“第一个”条目返回整行

详细信息:

Ruby/AR/Postgres 的类似答案:

如何执行原始 SQL:

此 Ruby 语法应该有效:

Log.select("DISTINCT ON (username) *").order(:username, :created_at)

关于sql - 获取每个组的第一条记录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24636256/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com