显示 table 组中具有最小时间戳的整个记录

Show entire record from table with minimum timestamp in a group

我已经尝试了大约三个小时来解决这个问题,但找不到解决方案。

如何在 table 中显示每个名称第一次出现(最短时间)的整行(所有 20 列)?

例如,我想做这样的事情,但行不通:

SELECT name, MIN(time), col1, col2, col3, col4
FROM table
GROUP BY name;

你必须先得到每个名字的最短时间,然后在 name/time 匹配的地方加入你原来的 table。

获取最短时间:

SELECT name, MIN(time) AS minTime
FROM myTable
GROUP BY name;

然后,获取所有列:

SELECT m.*
FROM myTable m
JOIN(
   SELECT name, MIN(time) AS minTime
   FROM myTable
   GROUP BY name) tmp ON tmp.name = m.name AND tmp.minTime = m.time;

大多数数据库支持 ANSI 标准 window 函数。有了这些,你就可以做到:

select t.*
from (select t.*, row_number() over (partition by name order by time) as seqnum
      from table t
     ) t
where seqnum = 1;