Puede usar una subconsulta para identificar el min(a)
valor para cada id
y luego únelo a tu mesa:
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
Consulte SQL Fiddle con demostración
El resultado es:
| ID | A | B |
------------------
| 10 | 5 | blue |
| 20 | 2 | black |
| 30 | 7 | red |