To nie lepiej nie dopuszczać do takich sytuacji?
Ja, gdybym miał już przefiltrować, to chyba bym użył niewydajnego sposobu (nie jestem pewien, czy działa):
$Result = mysql_query( 'SELECT * FROM `users`' );
while ( $Row = mysql_fetch_assoc( $Result ) )
{
$toDelete = mysql_query( "SELECT * FROM `users` WHERE `login` = '{$Row['login']}' AND `haslo` = '{$Row['haslo']}'" );
if ( mysql_num_rows( $toDelete ) > 1 )
{
mysql_query( "DELETE FROM `users` WHERE `login` = '{$Row['login']}' AND `haslo` = '{$Row['haslo']}'" ); // Usuwamy wszystko ( ! )
mysql_query( "INSERT INTO `users` VALUES ( {$Row['login']}, {$Row['haslo'} )" ); // Jeden z nich musi zostać, więc go dodajemy spowrotem xD
}
}