powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удаление из базы значений, больше определенного количества
17 сообщений из 17, страница 1 из 1
Удаление из базы значений, больше определенного количества
    #39090563
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые.
Возник следующий вопрос:
Есть таблица, состоящая из уникального ид и значения.
Как удалить из таблицы записи с одинаковыми значениями, встречающиеся больше х раз, в порядке убывания уникального ида?

Заранее благодарен =)
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39090574
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
delete from t 
    left join 
        (select max(id) id from c  
            group by v 
            having count(*) > 3
        ) m 
    on t.id = m.id
where m.id is null
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39090592
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lumix,

А можно ли удалить все записи, встречающиеся более х раз, но не х записей?
Грубо говоря, есть 15 совпадений. Удаляем все, кроме 5 последних
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39090603
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
delete from t 
    join t x
        on t.id = (select id from t a
            where t.v = a.v
            order by id desc    
            limit 5, 100500) 
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39090659
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lumix,

Я не смог :D
#2014 - Commands out of sync; you can't run this command now

Таблица `logs`
Сравниваем `items`
Ид - `id`

Заранее благодарен =)
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39090661
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotkewLumix,

А можно ли удалить все записи, встречающиеся более х раз, но не х записей?
Грубо говоря, есть 15 совпадений. Удаляем все, кроме 5 последних


...почитайте 7489069 ...
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39092303
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема актуальна
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39092327
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotkewПроблема актуальна


...решение -- тоже...
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39092685
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

В примере со счетчиками: при замене на delete - ошибка
В первом примере: обернул суб-запрос в еще один селект, но потерялся псевдоним запроса из области видимости
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39092833
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotkewjavajdbc,

В примере со счетчиками: при замене на delete - ошибка
В первом примере: обернул суб-запрос в еще один селект, но потерялся псевдоним запроса из области видимости



...да, Делете не любит когда удаляют из тойже таблицы что и селект.
Иногда полезно сделать промежуточную таблицу.
Обычно хорошо изолированый подселект работает.
Ну и сами переменные добавлют некоторые ограничения..

..ок, покажите что вы сделали и какая ошибка...
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39092855
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

delete from
(
select ta.*,
if(@typex=ta.user,
@rownum:=@rownum+1,
@rownum:=1+least(0,@typex:=ta.user)) rown
from `logs` ta, (select @rownum:=1, @typex:='_') zz
order by `id` DESC
) yy
where rown > 5

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( select ta.*, if(@typex=ta.user, @rownum:=@rownum+1, @rownum:=1+least(0,@' at line 2
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39092867
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытался, как советовали выше:

DELETE FROM `logs` t1 WHERE
`id` IN(
SELECT * FROM (
SELECT `id` FROM `logs` t2 WHERE t1.`user` = t2.`user` order by t2.`id` desc limit 10, 100
) AS `id`
)

t1 - не видит
#1054 - Unknown column 't1.user' in 'where clause'
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39092918
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
delete LOGS
from LOGS L
JOIN 
( select ID
   from
      (
       select 
            ta.*,
            if(@typex=ta.user, 
            @rownum:=@rownum+1, 
            @rownum:=1+least(0,@typex:=ta.user)) rown 
        from `logs` ta, 
                  (select @rownum:=1, @typex:='_') zz
         order by `id` DESC
        ) yy
    where rown > 5
) Z
ON L.ID = Z.ID
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39093104
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

#1109 - Unknown table 'logs' in MULTI DELETE


Попробовал delete from и тд:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'L JOIN ( select ID from ( select ta.*, ' at line 1
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39093209
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotkewjavajdbc,

#1109 - Unknown table 'logs' in MULTI DELETE


Попробовал delete from и тд:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'L JOIN ( select ID from ( select ta.*, ' at line 1


Похоже ДЕЛЕТЕ не дружит с алиасами...
попробуйте так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
delete LOGS
from LOGS 
JOIN 
( select ID
   from
      (
       select 
            ta.*,
            if(@typex=ta.user, 
            @rownum:=@rownum+1, 
            @rownum:=1+least(0,@typex:=ta.user)) rown 
        from `logs` ta, 
                  (select @rownum:=1, @typex:='_') zz
         order by `id` DESC
        ) yy
    where rown > 5
) Z
ON LOGS.ID = Z.ID
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39093222
kotkew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

запрос выполнился, но нужные строки не удалились
...
Рейтинг: 0 / 0
Удаление из базы значений, больше определенного количества
    #39093247
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotkewjavajdbc,

запрос выполнился, но нужные строки не удалились


выполните внутрений запрос отдельно и посмотрите,
выбирает ли он то что нужно удалить или нет.

не забудьте сделать коммит если он не автоматический.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удаление из базы значений, больше определенного количества
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]