- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Друзья.
Помогите пожалуйста решить задачу.
Есть следующая таблица (ниже) с количеством записей около 2 000 000, ее нужно почистить удалив одинаковые значения по полям id и uid, из всех одинаковых записей должна остаться только одна с самым большим pos. Как это можно сделать ?
Заранее большое спасибо за подсказку.
Оригинал:
+-----+-----+-----+---------------------+
| pos | id | uid | data |
+-----+-----+-----+---------------------+
| 334 | 518 | 100 | 2010-02-12 23:05:35 |
| 333 | 533 | 518 | 2010-02-10 12:53:38 |
| 331 | 518 | 249 | 2010-01-31 16:31:58 |
| 330 | 518 | 249 | 2010-01-31 16:06:40 |
| 329 | 518 | 149 | 2010-01-28 17:45:49 |
| 328 | 518 | 149 | 2010-01-28 17:45:35 |
| 327 | 518 | 149 | 2010-01-28 17:44:42 |
После чистки, должно быть так:
+-----+-----+-----+---------------------+
| pos | id | uid | data |
+-----+-----+-----+---------------------+
| 334 | 518 | 100 | 2010-02-12 23:05:35 |
| 333 | 533 | 518 | 2010-02-10 12:53:38 |
| 331 | 518 | 249 | 2010-01-31 16:31:58 |
| 329 | 518 | 149 | 2010-01-28 17:45:49 |
не понял, почему после очистки остались одинаковые id
delete from table where not in (запрос на выборку нужных данных)
Чето типа такого, наверн...
delete from table where not in (запрос на выборку нужных данных)
Чето типа такого, наверн...
да, delete from однозначно будет :)
1й запрос: получаем строки какие НЕ надо удалять - SELECT MAX(pos) as `pos` FROM `1` GROUP BY id, uid
2й запрос: формируем список из первого запроса и вставляем id-шники через запятую в запрос:
DELETE FROM `1` WHERE `pos` NOT IN( тут_список_через_запятую )
примерно так )
Ну, я к тому, что, если тс знает, как получить то, что ему надо оставить, будет чето типа такого. Вы ж сами написали, что непонятны условия, мож хоть тс понимает :)
Если вся таблица построена по принципу, как указано в примере, то должны сработать такие строки:
Перед пробой сделайте резервную копию таблицы.
Если же не во всей таблице pos уменьшается (как в примере), то добавить первой строчку ALTER TABLE test ORDER BY pos DESC; (в следующем моем сообщении указал полный код)
1й запрос: получаем строки какие НЕ надо удалять - SELECT MAX(pos) as `pos` FROM `1` GROUP BY id, uid
ну во первых оно даже сгруппируется неправильно
frantic добавил 23.02.2010 в 23:47
а с максимальным айди как быть? какие строки уник оставит?
ну во первых оно даже сгруппируется неправильно
с чего это вдруг неправильно? я у себя локально проверял, группирует как надо, но вот вложенный запрос просто не хавает, поэтому на два разбил. так что не надо тут воду мутить 🙅
с чего это вдруг неправильно? я у себя локально проверял, группирует как надо, но вот вложенный запрос просто не хавает, поэтому на два разбил. так что не надо тут воду мутить 🙅
мда подождем пока тс уточнит каков должен быть результат
а с максимальным айди как быть? какие строки уник оставит?
оставит те, которые первыми встретит, т.е. если в таблице уменьшающееся pos, как в примере, то все сработает верно.
А если нет, то тогда полная версия, которая в любом случае должна сработать: