Автор Тема: Delete From table  (Прочитано 8533 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alesh

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 97
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.alesh.ru
Delete From table
« : 10 Февраля 2004, 16:12:31 »
Скажите, а можно ли посредствами одного SQL запроса удалить все записи с дублирующимся названием например.

Т.Е. Есть таблица news в ней есть много дублирующихся новостей, как удалить все где поле title одинаковое?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Delete From table
« Ответ #1 : 10 Февраля 2004, 16:21:04 »
delete from table where title=\'$title\';

Оффлайн alesh

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 97
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.alesh.ru
Delete From table
« Ответ #2 : 10 Февраля 2004, 16:24:02 »
Ты не понял, либо издиваешься.

Есть таблица в ней 15 тысяч записей.
бывают некоторые дублирующиеся - тоесть они разные бывают.

Можно ли посредствами _ТОЛЬКО_ sql удалить все дублирующиеся новости.

Оффлайн гоша

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 85
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Delete From table
« Ответ #3 : 10 Февраля 2004, 16:47:41 »
alter ignore table \'mytable\' add unique something (title);

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Delete From table
« Ответ #4 : 10 Февраля 2004, 18:37:51 »
[off]перехали[/off]
AS IS...

Оффлайн alesh

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 97
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.alesh.ru
Delete From table
« Ответ #5 : 10 Февраля 2004, 18:39:12 »
гоша Я -  не совсем понял, что именно выполняет эта команда? пытался копаться в мануале, не получилось.

Оффлайн гоша

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 85
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Delete From table
« Ответ #6 : 10 Февраля 2004, 18:54:34 »
добавляет уникальный индекс по полю title.

слово ignore велит ему удалить записи, в которых значение слова title повторяется, оставив из них только первую.

по-моему, это не совсем то что вам нужно... :-)

Оффлайн alesh

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 97
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.alesh.ru
Delete From table
« Ответ #7 : 10 Февраля 2004, 19:53:00 »
да. вернее совсем не то:-)
Что-ж.

придётся 15.000 обрабатывать через пхп

Оффлайн гоша

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 85
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Delete From table
« Ответ #8 : 10 Февраля 2004, 20:06:34 »
ну зачем же все 15 тыщ.

select id from mytable group by title having count(title) > 1

выберет только дубликаты. Собрать их в массив, а потом

delete from mytable where id in (".implode(",",массив)

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

Оффлайн alesh

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 97
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.alesh.ru
Delete From table
« Ответ #9 : 10 Февраля 2004, 20:09:13 »
гоша  Спасибо! Это прекрасно!:-)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Delete From table
« Ответ #10 : 10 Февраля 2004, 20:14:14 »
гоша, а
insert into tmp select id from mytable group by title having count(title)<2
?

Оффлайн гоша

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 85
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Delete From table
« Ответ #11 : 10 Февраля 2004, 20:35:26 »
Ну по-моему лучше удалить.
Таблицу-то еще скопировать надо.

А вообще вот тут

http://www.mysql.com/doc/en/Rewriting_subqueries.html

пишут "The first option is to upgrade to MySQL version 4.1." :)

Оффлайн it4all

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
Delete From table
« Ответ #12 : 10 Февраля 2004, 22:01:58 »
гоша я балдею от твоего знания SQL зайди на мой топ,помоги !!!
ПАЖАЛУСТА!!
http://forums.webscript.ru/showthread.php?s=&threadid=15725&msgnum=3

Оффлайн гоша

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 85
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Delete From table
« Ответ #13 : 11 Февраля 2004, 11:39:09 »
напрасно балдеешь, потому как я вроде бы слажал там выше. :-(

На самом деле

select id from mytable group by title having count(title) > 1

выберет опять-таки первую из дубликатов. Надо, конечно же,

select title from mytable group by title having count(title) > 1

Оффлайн alesh

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 97
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.alesh.ru
Delete From table
« Ответ #14 : 11 Февраля 2004, 11:40:40 »
у меня, кстати, всё работает на первом варианте

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28