Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> одинаковые ряды в таблице, удаление 
:(
    Опции темы
AlexxO
  Дата 18.7.2005, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 21.1.2004
Где: Belarus, Borisov

Репутация: нет
Всего: нет



Посоветуйте плиз как лучше удалить одинаковые (отличаются только по id) ряды в таблице.
перебирать их в цикле while ИМХО не оптимально, может каким SQL запросом можно прблему решить?
PM MAIL WWW ICQ AOL YIM MSN   Вверх
Irokez
Дата 18.7.2005, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 3
Всего: 53



по идее можно было бы так:
Код

delete from table where id not in (select distinct id from table);

но почему то не работает =(
PM   Вверх
Mal Hack
Дата 18.7.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



А не проще НЕ ДОПУСКАТЬ повтора?
PM ICQ   Вверх
Bikutoru
Дата 19.7.2005, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 2
Всего: 22



Одним запросом выбрать одинаковые записи можно так:
Код

SELECT 
 t1.id 
FROM
 table AS t1 
INNER JOIN
 table AS t2 ON (t1.some_value = t2.some_value AND t1.id != t2.id);

и если у тебя MySQL 4.0 и выше то так
Код

DELETE FROM table
WHERE
 id IN (SELECT t1.id FROM table AS t1 INNER JOIN table AS t2 ON (t1.some_value = t2.some_value AND t1.id != t2.id))

Если более старая, то скриптом формируешь запрос типа
Код

DELETE FROM table WHERE id IN (...)


Irokez, а твой запрос и не может работать.
Код
select distinct id from table
выберет все возможные id из таблицы
Код
id not in (select distinct id from table)
всегда ложно будет smile


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
Irokez
Дата 19.7.2005, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 3
Всего: 53



Цитата(Bikutoru @ 19.7.2005, 10:32)
Irokez, а твой запрос и не может работать.

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

select distinct id from table

должен выбрать уникальные id, а все остальные удаляем.. по логике вроде все правильно
PM   Вверх
Bikutoru
Дата 19.7.2005, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 2
Всего: 22



DISTINCT просто выдает набор значений без повторов. Т.е. если в таблице table есть записи с значениями поля field 1, 2, 4, 5, 2, 5, то
Код
SELECT DISTINCT field FROM table
вернет (1, 2, 4, 5). Если не веришь - проверь smile


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
o.s.a.
Дата 19.7.2005, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: нет
Всего: 15



Цитата
должен выбрать уникальные id, а все остальные удаляем..

так ведь id и так уникальные, другие поля одинаковые => по ним нужно проверять


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Joes
Дата 19.7.2005, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 15.11.2004

Репутация: нет
Всего: 7



PM MAIL   Вверх
Irokez
Дата 19.7.2005, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 3
Всего: 53



Bikutoru ок ступил.. признаю ошибку
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.