Cara, dando uma analisada até o momento, por sql, só vi esta solução:
1) Crie uma tabela temp igual a tabela original
2) Faça um INSERT assim:
INSERT INTO tabela_temp (ID,hora) SELECT ID, MIN(HORA) FROM tabela GROUP BY ID
Neste momento a tabela_temp tem os registros que vc precisa.
3) DELETE FROM Tabela
Apaga todos os registros da tabela
4) INSERT INTO tabela(ID,hora) SELECT ID, HORA FROM tabela_temp
Insere os registros da tabela_temp
Desta forma, só por SQL, vc consegue o que quer.
Veja se serve para vc, talvez a maior dificuldade seja fazer isso selecionando mais campos...aí teria que fazer mais selects no meio para obter o código único de cada registro inserindo assim na tabela_temp.
at+