Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как удалить одинаковые Ники в базе данных
 
 автор: Елена Смирнова   (27.03.2008 в 17:31)   письмо автору
 
 

Подскажите как удалить одинаковые Ники в таблице вида:

id nik pass

   
 
 автор: Елена Смирнова   (27.03.2008 в 18:37)   письмо автору
 
   для: Елена Смирнова   (27.03.2008 в 17:31)
 

Вот так не получается =(

DELETE email FROM chat_users123 JOIN  
(
SELECT email AS cnt, email FROM chat_users123 GROUP BY email HAVING cnt > 1 
)
AS tcnt USING(email) 

   
 
 автор: jeans1986   (27.03.2008 в 19:20)   письмо автору
 
   для: Елена Смирнова   (27.03.2008 в 18:37)
 

моежет по конкретнее задать вопрос а то как то не понятно.

   
 
 автор: Елена Смирнова   (27.03.2008 в 19:40)   письмо автору
 
   для: jeans1986   (27.03.2008 в 19:20)
 

Что не понятного? Нужно удалить дубликаты

   
 
 автор: Atheist_?   (27.03.2008 в 19:45)   письмо автору
 
   для: Елена Смирнова   (27.03.2008 в 19:40)
 

В запросе явно ошибка в этом:
DELETE email FROM
Поле удалить нельзя. Только строку, т.е. email тут лишнее.

   
 
 автор: Елена Смирнова   (27.03.2008 в 22:31)   письмо автору
 
   для: Atheist_?   (27.03.2008 в 19:45)
 

Уже все перепробовала и никак не получается удалить дубликаты из таблицы...
ПОМОГИТЕ плз

   
 
 автор: Atheist_?   (27.03.2008 в 23:00)   письмо автору
 
   для: Елена Смирнова   (27.03.2008 в 22:31)
 

Типа такого: DELETE `tbl1` FROM `users` `tbl1`, `users` `tbl2` WHERE `tbl1`.`nik` = `tbl2`.`nik` AND `tbl1`.`id` != `tbl2`.`id`
Если в таблице будут два ника "username", то удалятся оба аккаунта. Так надо?

   
 
 автор: ronin80   (28.03.2008 в 07:39)   письмо автору
 
   для: Atheist_?   (27.03.2008 в 23:00)
 

а какой ник из дублирующихся надо удалить? любой?

и удалять надо строку полностью, или просто очистить какие-то поля?

   
 
 автор: С телефона   (28.03.2008 в 14:34)
 
   для: ronin80   (28.03.2008 в 07:39)
 

Надо удалить строки в которых повторяються значения поля id

   
 
 автор: С телефона   (28.03.2008 в 14:37)
 
   для: С телефона   (28.03.2008 в 14:34)
 

Извените, точнее поле nik.

   
 
 автор: Atheist_?   (28.03.2008 в 15:03)   письмо автору
 
   для: С телефона   (28.03.2008 в 14:37)
 

См. Atheist_? (27.03.2008 в 23:00)

   
 
 автор: ronin80   (28.03.2008 в 15:48)   письмо автору
 
   для: Atheist_?   (28.03.2008 в 15:03)
 

т.е. надо очистить все дублирующиеся поля nik?

или всё таки удалить эти строки?

да, и сколько может быть дублирующихся записей? неограниченное кол-во?

   
 
 автор: С телефона   (28.03.2008 в 17:12)
 
   для: ronin80   (28.03.2008 в 15:48)
 

Именно строки. Неограниченное кол-во

   
 
 автор: Елена Смирнова   (28.03.2008 в 18:46)   письмо автору
 
   для: С телефона   (28.03.2008 в 17:12)
 

Вот есть таблица:

id nik pass

1 asd 123
2 asd 321
3 ww  123
4 asd 123
5 ggg 321
6 ggg 123

Нужно удалить строки с дубликатами поля id
Должно отсаться:

id nik pass

1 asd 123
3 ww  123
6 ggg 123

   
 
 автор: Елена Смирнова   (28.03.2008 в 21:22)   письмо автору
 
   для: Елена Смирнова   (28.03.2008 в 18:46)
 

Никто незнает?! Неверю =)

   
 
 автор: Root   (28.03.2008 в 21:50)   письмо автору
 
   для: Елена Смирнова   (28.03.2008 в 21:22)
 


CREATE TABLE dist_names SELECT id, nik, pass 
FROM tbl_name
GROUP BY nik;

   
 
 автор: ronin80   (28.03.2008 в 22:48)   письмо автору
 
   для: Root   (28.03.2008 в 21:50)
 

ещё вопрос на засыпку: а какие именно записи удалять не важно?

   
 
 автор: С телефона   (28.03.2008 в 23:40)
 
   для: ronin80   (28.03.2008 в 22:48)
 

Юмор я смотрю присутствует, а помочь так никто и не помог :(

   
 
 автор: Root   (28.03.2008 в 23:43)   письмо автору
 
   для: С телефона   (28.03.2008 в 23:40)
 

что значит не помог?
чем вас запрос не устраивает?

   
 
 автор: С телефона   (29.03.2008 в 01:39)
 
   для: Root   (28.03.2008 в 23:43)
 

Без разницы какие там данные

   
 
 автор: Root   (29.03.2008 в 02:14)   письмо автору
 
   для: С телефона   (29.03.2008 в 01:39)
 

так в чем собственно проблема создать таблицу как написано (28.03.2008 в 21:50)
а потом DROP старую и RENAME если нужно..

   
 
 автор: С телефона   (29.03.2008 в 03:04)
 
   для: Root   (29.03.2008 в 02:14)
 

А разве одинаковых данных не будет в новой таблице?

   
 
 автор: ronin80   (29.03.2008 в 06:11)   письмо автору
 
   для: С телефона   (29.03.2008 в 03:04)
 

delete from table
where nik in (select nik from t as table group by t.nik having count(*)>1)
and id not in (select max(t.id) as id from table as t group by t.id )

попробуй так, таким образом будут удалены все повторяющиеся строки кроме последней из повторяющихся

   
 
 автор: Root   (29.03.2008 в 11:40)   письмо автору
 
   для: С телефона   (29.03.2008 в 03:04)
 

>А разве одинаковых данных не будет в новой таблице?
не должно быть :-)

   
 
 автор: Елена Смирнова   (29.03.2008 в 20:13)   письмо автору
 
   для: Root   (29.03.2008 в 11:40)
 

Спасибо! Помогла создание новой таблицы... Интересно, а почему дубликаты в нее не записались? Особенности SQL???

   
 
 автор: Atheist   (29.03.2008 в 20:58)   письмо автору
 
   для: Елена Смирнова   (29.03.2008 в 20:13)
 

Из-за GROUP BY nik

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования