Удаление повторяющихся записей

Sepuka

Новичок
Удаление повторяющихся записей

Можно ли удалить из одной таблицы все повторяющиеся записи одним запросом? Я вижу как это сделать не одним
PHP:
// создать временную таблицу
CREATE TABLE `tmp` 
(`url` VARCHAR( 100 ) PRIMARY KEY ,  
`cnt` INT  ) ENGINE = MEMORY;  

// вставить из обычной таблицы во временную все записи с их количеством повторений
INSERT INTO `tmp` ( `url` , `cnt` )   
SELECT `url` , COUNT( `url` ) AS `cnt`   
FROM `links`   GROUP BY `url`   ORDER BY `cnt` DESC ;  

// удалить все которые повторяются больше 1го раза
DELETE FROM `links` WHERE `url` = ANY (  SELECT `url`   FROM `tmp`   WHERE `cnt` >1  );  

DROP TABLE `tmp`;
 

zerkms

TDD infected
Команда форума
поставить уникальный индекс с игнором, потом его удалить %)
 

Sepuka

Новичок
Не очень понял...
Я пробовал поставить уникальный индекс, но не смог т.к. строки уже были не уникальны и мне вывели предупреждение.

-~{}~ 02.07.08 08:19:

Кстати, есть ли ограничение на количество строк во временных таблицах? Когда я копировал в таблицу MEMORY мне написали что таблица `tmp` is full в тот момент в ней было 144 тыс записей
 

zerkms

TDD infected
Команда форума
но не смог т.к. строки уже были не уникальны и мне вывели предупреждение.
IGNORE
http://dev.mysql.com/doc/refman/5.0/en/alter-table.html

Кстати, есть ли ограничение на количество строк во временных таблицах?
насколько я помню, ограничение на временные таблицы устанавливается объёмом памяти, но подтверждение слов быстро в доке найти не смог :-(
 

Sepuka

Новичок
Gas - понял, спасибо. Я даже не обратил внимания на это.
 
Сверху