Здравствуйте.
Есть таблица mySQL table_1 такая:
id | name | ... | ... |
1 | vasya | ... | ... |
2 | sasha | ... | ... |
3 | vasya | ... | ... |
4 | gena | ... | ... |
5 | sasha | ... | ... |
Надо сделать из неё table_2
id | name | ... | ... |
1 | sasha | ... | ... |
2 | vasya | ... | ... |
3 | gena | ... | ... |
То бишь, по столбцу name найти все совпадения имён, и удалить лишние, оставив только одну, последнюю по id, запись. И записать результат в новую таблицу.
Как это лучше сделать, учитывая, что в table_1 100000+ строк, и сколько из них дублируется, неизвестно? Спасибо.
по столбцу name найти все совпадения имён, и удалить лишние, оставив только одну, последнюю по id, запись. И записать результат в новую таблицу.
Разумнее сделать это в обратном порядке.
-- записать желаемое в новую таблицу
INSERT INTO table2 (id, name, ...)
SELECT t1.id, t1.name, ...
FROM table1 t1
JOIN ( SELECT MAX(t11.id) id, t11.name
FROM table1 t11
GROUP BY t11.name
) sq ON t1.id=sq.id AND t1.name=sq.name;
-- очистить старую таблицу
TRUNCATE table1;
-- скопировать в неё только нужные записи
INSERT INTO table1 (id, name, ...)
SELECT id, name, ...
FROM table2;
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости