Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день, не могу решить вопрос. Есть таблица:
Необходимо удалить из нее строки (если их более 5) с совпадающими значениями option_id и ip. Наверное, криво объясняю. То есть нужно удалить выделенное пуктиром:
Как это можно сделать?
Неактивен
Одним запросом не получится, прийдется сначала делать группирующую
выборку, а потом для каждого ip + option_id удалять отдельным запросом.
Впрочем, возможно, удастся что-то сделать через подзапрос с помощью
GROUP_CONCAT и строковых функций (отрезать первые пять id, а остальное
скормить DELETE).
Неактивен
paulus написал:
Одним запросом не получится, прийдется сначала делать группирующую
выборку, а потом для каждого ip + option_id удалять отдельным запросом.
К сожалению, я совсем не силен в MySQL. На данный момент нагулил только select DISTINCT option_id, ip from mytable, но это совсем не то . Я не знаю, как реализовать ваши идеи. Вы можете написать сам запрос?
Неактивен
SELECT GROUP_CONCAT(id)
FROM tablename GROUP BY ip, option_id
HAVING COUNT(*) > 5;
Из полученных строк отрезаете пять id, которые надо оставить, и потом
DELETE FROM tablename WHERE id IN (и тут перечисляете все, что осталось);
Неактивен
paulus написал:
SELECT GROUP_CONCAT(id)
FROM tablename GROUP BY ip, option_id
HAVING COUNT(*) > 5;
Из полученных строк отрезаете пять id, которые надо оставить, и потом
DELETE FROM tablename WHERE id IN (и тут перечисляете все, что осталось);
Что-то не получается, смотрите:
Неактивен
ыыы. Если бы это сработало, то удалило бы все строки. Вы действительно
это хотите? Надо таки будет сделать что-то в редакторе посередине.
Неактивен