Удаление дублей из таблицы в My SQL

12
R
На сайте с 11.04.2009
Offline
10
1112

Хотел удалить посты с одинаковым названием из таблицы таким запросом:

DELETE FROM `wp_posts` WHERE ID NOT IN (SELECT min(ID) FROM `wp_posts`GROUP BY post_title );

Не сработало. Нельзя апдейтить ту же таблицу, из которой выбираешь. Справился двумя запросами, в первом создавал временную таблицу, во втором - удалял записи. Но потом стало интересно, чисто ради "спортивного" интереса: можно ли обойтись одним запросом ?

[Удален]
#1
DELETE FROM `wp_posts` `p`
INNER JOIN (SELECT min(ID) `id` FROM `wp_posts`GROUP BY post_title ) `h`

WHERE ID!=`h`.`id`;

отталкиваемся отсюда, в этом направлении истина, почему неуверен - потому что писал от балды, ошибки могут быть :) может и сработать )

malls
На сайте с 08.08.2005
Offline
255
#2
bearman:
потому что писал от балды

вот всегда ты так! 😂😂😂

Хотя чего желать - вопрос тоже "от балды" задан...

[Удален]
#3
malls:
вот всегда ты так!

хорошо хоть не

писал от болта, ибо положил болт на этот url в браузере
S
На сайте с 15.07.2008
Offline
139
#4

DELETE wp1 FROM wp_posts wp1

INNER JOIN wp_posts wp2

WHERE wp1.post_title=wp2.post_title AND wp1.id > wp2.id

N
На сайте с 06.05.2007
Offline
419
#5

не так давно обсуждали

/ru/forum/comment/6206419

Santyago, а вы свое запускать пробовали?

Кнопка вызова админа ()
S
На сайте с 15.07.2008
Offline
139
#6
netwind:
Santyago, а вы свое запускать пробовали?

А что? Не работает? :D

N
На сайте с 06.05.2007
Offline
419
#7

Santyago, не должен, по очевидной причине, с которой ТС и пришел.

S
На сайте с 15.07.2008
Offline
139
#8
netwind:
Santyago, не должен, по очевидной причине, с которой ТС и пришел.

А Вы пробовали?

N
На сайте с 06.05.2007
Offline
419
#9

Santyago, нет,пардон. ваш способ тоже полностью "материализует" данные.

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

S
На сайте с 15.07.2008
Offline
139
#10
netwind:
Santyago, нет,пардон. ваш способ тоже полностью "материализует" данные.
разве что при большом числе постов самообъединение очень невыгодно. если попробовать на большой базе, то можно и не дождаться.

Как раз такой джоин при нормально построенных индексах будет эффективнее, чем подзапрос на каждую запись из таблицы постов (к тому же ещё и с группировкой). Ход мысли в исходном запросе я, честного говоря, вообще не понял. Дикость какая-то.

ЗЫ. Миллионах на 10 записях скорее всего загнётся. :) Там временная таблица будет строиться вечность.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий