あなたが持っているテーブルでこれを行うことはできません。あなたは勇敢な試みをすることができます:
select id, time
from (select id, time
from t
group by t
) t
where not exists (select 1 from t t2 where t2.id = t.id and t2.time = t.time)
group by id
つまり、最初の行を除外しようとします。
これが不可能な理由は、テーブルが本質的に順序付けられていないためです。そのため、テーブルには「秒」の実際の定義はありません。これにより、SQL エンジンは、処理中に適切と思われる行を再配置する機会を得ることができます。これにより、パフォーマンスが大幅に向上する可能性があります。
あなたが使用している構造でさえ:
select id, time
from t
group by id
は、最初の行から時刻を返す保証はありません。これは、隠し列と呼ばれる MySQL の (誤った) 機能です。実際には、すべての値が同じ場合のみを対象としています。実際には、最初の行から値を取得しているように見えますが、それを保証することはできません。
おそらく最善の解決策は、自動インクリメント列を持つ新しいテーブルにデータを選択することです。
create table newtable (
autoid int auto_increment,
id int,
time int
);
insert into newtable(id, time)
select id, time from t;
実際には、これはおそらく元のテーブルと同じ順序を維持し、autoid を使用して 2 番目の行を取得できます。ただし、強調したいのは「実際に」です。値が正しい順序であるという保証はありませんが、おそらくそうなるでしょう。