| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > как удалить дубликаты записей в таблице? |
| Автор: Coder 20.8.2007, 02:32 |
| нужно удалить строки, которые равны по всем поля (кроме id). как это сделать? |
| Автор: Akina 20.8.2007, 08:44 |
| Погоди... если есть 2 одинаковых (кроме ID) записи, надо удалить одну или обе? |
| Автор: belousov 20.8.2007, 10:13 |
| distinct не подойдет? |
| Автор: Coder 21.8.2007, 01:42 | ||
| Akina поля полностью одинаковы, а ID разные (т.к. записи пришли в разное время) и нужно удалить все кроме одной. повторений может быть не 2, а 8 например. belousov не знаю, как его сюда привинтить. Добавлено через 3 минуты и 14 секунд
это упрощенное представление. нужно удалить row0 или row2. |
| Автор: muzer 21.8.2007, 11:02 | ||
Если у вас не несколько-десятков-миллионная таблица, и операция единовременная, а не еже_какая-нить, то самый быстрый и простой вариант:
Если операция периодическая и в параллель кто-то может менять таблицу, то эту конструкцию нужно обернуть в какой-нибудь LOCK, аналогично в параллельном скрипте. Здесь подойдут именованные локи, т.к. табличные использовать не получится. |
| Автор: Akina 21.8.2007, 15:03 |
Кроме КАКОЙ одной? Самой старой? самой свежей? Самой длинной? Пофиг какой? ставь задачу нормально - у нас все телепаты в отпусках. |
| Автор: Coder 22.8.2007, 02:45 | ||
Ну да - пофиг... muzer, +1 |
| Автор: fidres 18.9.2007, 14:43 |
| а нахря те тогда одни идэшники? по мне так проще сделать проверку на вводимые данные, чтоб не было повторений. а базы туда-сюда култырить - тоже как-то не выход, по-моему... сделай у клиента проверку данных при попытке запостить запрос в базу. пусть прочекает базу по определённому ключу и при ненахождении оного - постит в базу что угодно. (хотя, всё равно не возьму в толк нахрена в базе одни идэшники без данных полей?!) ещё проще можно сделать (хотя это и излишне) проверку, если какую-то часть инфы держать на стороне клиента до поры до времени... потом, когда уже все данные куска базы будут сложены в один, можно запостить целый блок проверенной и упорядоченной инфы. правда такой вариант не подходит, если инфа должна оперативно изменятся непосредственно в БД на серваке... но тоже можно формировать какие-то отдельные, небольшие кусочки инфы и потом уже пытатся отправить их на сервак. кстати, где-то помнится я здесь видал метод сжатия БД... вполне возможно, что там применяется что-нибудь похожее... |