sql >> Base de Datos >  >> RDS >> Mysql

Combinar y luego Eliminar entradas duplicadas

No creo que puedas hacer esto en SQL de manera eficiente. Una forma lenta de hacerlo es algo como:

CREATE TEMPORARY TABLE tmp_table (...);
INSERT INTO tmp_table SELECT phone, max(rating) FROM table GROUP BY phone;
TRUNCATE table;
INSERT INTO table SELECT * FROM tmp_table;

Una mejor manera sería un procedimiento almacenado o un script externo. Seleccione todas las filas de la tabla ordenadas por phone y agrupar/fusionar/eliminar manualmente (iterar sobre los resultados, comparar con el phone valor de la fila anterior, si es diferente tienes un nuevo grupo, etc.). Sin embargo, escribir procedimientos almacenados en MySQL es doloroso, así que no voy a escribir el código por usted. :)