MySQL按不同ID查询最近10条记录
MySQL Query the most recent 10 records per different ID
我正在尝试通过 MySQL 查询检索每个 ID 的最后 2 条记录(从我们的 dt (date/time) 列按时间顺序排列)。可以有多个具有相同服务器 ID 的记录。到目前为止我的代码是,但没有工作:
select * from table
where sid = id
Order by dt Desc limit 2"
我也尝试过使用 ALL 函数,但是,我的 MySQL 没有足够的更新,我目前无法更新它,所以这不是一个选项。我也试过:
select * (partition by server_id order by dt desc) from table
limit 2;
到目前为止,我觉得最接近解决这个问题的是我生成的这段代码:
select * from table
group by id
Order by dt Desc limit 10
;
上面这段代码的问题是它现在只查询每个 ID 的 1 个条目,而不是 10 个。
快速而肮脏 - 使用子查询获取您感兴趣的行,然后加入它:
select * from table join (select dt, server_id, count(*) from table
group by dt, server_id
Order by dt Desc limit 2) tops on table.server_id=tops.server_id and table.dt=tops.dt
性能不会很好,但可能足以满足您的需求。
我正在尝试通过 MySQL 查询检索每个 ID 的最后 2 条记录(从我们的 dt (date/time) 列按时间顺序排列)。可以有多个具有相同服务器 ID 的记录。到目前为止我的代码是,但没有工作:
select * from table
where sid = id
Order by dt Desc limit 2"
我也尝试过使用 ALL 函数,但是,我的 MySQL 没有足够的更新,我目前无法更新它,所以这不是一个选项。我也试过:
select * (partition by server_id order by dt desc) from table
limit 2;
到目前为止,我觉得最接近解决这个问题的是我生成的这段代码:
select * from table
group by id
Order by dt Desc limit 10
;
上面这段代码的问题是它现在只查询每个 ID 的 1 个条目,而不是 10 个。
快速而肮脏 - 使用子查询获取您感兴趣的行,然后加入它:
select * from table join (select dt, server_id, count(*) from table
group by dt, server_id
Order by dt Desc limit 2) tops on table.server_id=tops.server_id and table.dt=tops.dt
性能不会很好,但可能足以满足您的需求。