Forum Webscript.Ru
Общие => Базы данных => Тема начата: alesh от 10 Февраля 2004, 16:12:31
-
Скажите, а можно ли посредствами одного SQL запроса удалить все записи с дублирующимся названием например.
Т.Е. Есть таблица news в ней есть много дублирующихся новостей, как удалить все где поле title одинаковое?
-
delete from table where title=\'$title\';
-
Ты не понял, либо издиваешься.
Есть таблица в ней 15 тысяч записей.
бывают некоторые дублирующиеся - тоесть они разные бывают.
Можно ли посредствами _ТОЛЬКО_ sql удалить все дублирующиеся новости.
-
alter ignore table \'mytable\' add unique something (title);
-
[off]перехали[/off]
-
гоша Я - не совсем понял, что именно выполняет эта команда? пытался копаться в мануале, не получилось.
-
добавляет уникальный индекс по полю title.
слово ignore велит ему удалить записи, в которых значение слова title повторяется, оставив из них только первую.
по-моему, это не совсем то что вам нужно... :-)
-
да. вернее совсем не то:-)
Что-ж.
придётся 15.000 обрабатывать через пхп
-
ну зачем же все 15 тыщ.
select id from mytable group by title having count(title) > 1
выберет только дубликаты. Собрать их в массив, а потом
delete from mytable where id in (".implode(",",массив)
а если мускуль четвертый, то подзапросом.
-
гоша Спасибо! Это прекрасно!:-)
-
гоша, а
insert into tmp select id from mytable group by title having count(title)<2
?
-
Ну по-моему лучше удалить.
Таблицу-то еще скопировать надо.
А вообще вот тут
http://www.mysql.com/doc/en/Rewriting_subqueries.html
пишут "The first option is to upgrade to MySQL version 4.1." :)
-
гоша я балдею от твоего знания SQL зайди на мой топ,помоги !!!
ПАЖАЛУСТА!!
http://forums.webscript.ru/showthread.php?s=&threadid=15725&msgnum=3 (http://forums.webscript.ru/showthread.php?s=&threadid=15725&msgnum=3)
-
напрасно балдеешь, потому как я вроде бы слажал там выше. :-(
На самом деле
select id from mytable group by title having count(title) > 1
выберет опять-таки первую из дубликатов. Надо, конечно же,
select title from mytable group by title having count(title) > 1
-
у меня, кстати, всё работает на первом варианте
-
нет-нет, не работает так.
mysql> select * from aa;
+-------+------+
| title | id |
+-------+------+
| a | 100 |
| a | 26 |
| a | 28 |
| b | 62 |
| b | 25 |
| b | 141 |
| x | 29 |
| z | 123 |
| y | 129 |
+-------+------+
mysql> select * from aa group by title having count(title)>1;
+-------+------+
| title | id |
+-------+------+
| a | 100 |
| b | 62 |
+-------+------+
-
гоша у алеша уже все работает,а ты пытаешся собственнубю лажу исправить.
Что тебе стоит помочь?
Или около пхппешный флейм на других топах интереснее?
Мне нужно-то всего один пример грамотного запроса и все дальше я буду учится сам,а то все доки какие я скачал - полный отстой (кроме маны конечно,но учиться по ней невозможно)