se è un problema solo in estrazione dei record va benissimo usare il distinct, ovviamente senza selezionare la colonna "id"
se, invece, vuoi ripulire la tabella dai duplicati puoi fare una cosa tipo questa
Codice PHP:
// crei una vista
$view = "CREATE VIEW v_tua_tabella as SELECT id FROM tua_tabella GROUP BY colore, taglia";
$query_v = mysql_query($view) or die ("impossibile eseguire la query $view: " .mysql_error());
// cancelli i record duplicati, selezionando gli id che non sono presenti nella vista
$del = "DELETE FROM tua_tabella WHERE id NOT IN (SELECT id FROM v_tua_tabella)";
$query_d = mysql_query($del) or die ("impossibile eseguire la query $del: ".mysql_error());
// cancelli la vista (opzionale)
$drop_view = "DROP VIEW IF EXISTS v_tua_tabella";
$drop = mysql_query($drop_view) or die ("impossibile eseguire la query $drop_view: ".mysql_error());
ovviamente, prima di metterti a giocare con le query di delete, fai un bel backup del DB, almeno puoi tornare indietro senza troppi problemi...