Vous pouvez utiliser une sous-requête pour identifier le min(a)
valeur pour chaque id
puis joignez-le à votre table :
select *
from yourtable t1
inner join
(
select min(A) A, id
from yourtable
group by id
) t2
on t1.id = t2.id
and t1.A = t2.A
Voir SQL Fiddle avec démo
Le résultat est :
| ID | A | B |
------------------
| 10 | 5 | blue |
| 20 | 2 | black |
| 30 | 7 | red |