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

Форум MySQL

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

 

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

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

тема: Как удалить повторяющиеся записи?
 
 автор: Владимир22   (13.02.2008 в 14:25)   письмо автору
 
 

Подскажите, кто уже сталкивался, как можно удалить из базы повторяющеюся комбинацию:
фамилию (ячейка "familia") + имя (ячейка "имя")?
Что-то типа такого:
mysql_query("delete from spisok where (familia + name) не повторяются ");

Заранее спасибо за помощь.
Т.е. если связка "фамилия+имя" уже есть в базе, то удалить. Знатоки, help!

   
 
 автор: Shaxmatu   (14.02.2008 в 16:03)   письмо автору
 
   для: Владимир22   (13.02.2008 в 14:25)
 

Нужно удалить все записи с повторяющейся комбинацией или все таки по одной записи оставить? И нужно на чистом SQL или помощь PHP тоже можно использовать?

   
 
 автор: Владимир22   (18.02.2008 в 02:21)   письмо автору
 
   для: Shaxmatu   (14.02.2008 в 16:03)
 

По одной записи даже нужно оставить. Можно и спомощью PHP.

   
 
 автор: cheops   (18.02.2008 в 13:28)   письмо автору
 
   для: Владимир22   (13.02.2008 в 14:25)
 

Т.е. в таблице должны остаться только уникальные значения?

   
 
 автор: Владимир22   (18.02.2008 в 16:27)   письмо автору
 
   для: cheops   (18.02.2008 в 13:28)
 

Да, т.е. если есть уже связка "familia + name", то её не трогать, а все повторения таких связок удалить. Как?

   
 
 автор: cheops   (19.02.2008 в 02:44)   письмо автору
 
   для: Владимир22   (18.02.2008 в 16:27)
 

Обычно в таких случаях создают новую таблицу, которую заполняют уникальными значениями при помощи оператора CREATE TABLE ... SELECT ... GROUP BY, затем старую таблицу уничтожают, а новую переименовывают, так, чтобы её значение совпадало со старым.

   
 
 автор: mechanic   (19.02.2008 в 17:44)   письмо автору
 
   для: cheops   (19.02.2008 в 02:44)
 

а еще вариант - создать unique-ключ по этим двум полям

   
 
 автор: Eugene77   (20.02.2008 в 14:47)   письмо автору
 
   для: mechanic   (19.02.2008 в 17:44)
 

>а еще вариант - создать unique-ключ по этим двум полям
Как это?
Я считал что unique-ключ создаётся только по каждому полю в отдельности, то есть создание двух таких ключей будет требованием уникальности всех имён и всех фамилий.

   
 
 автор: Trianon (...)   (20.02.2008 в 15:11)
 
   для: Eugene77   (20.02.2008 в 14:47)
 

unique - ограничение уникальности значений ключа.
Если ключ создан на множестве полей, то значением ключа будет являться набор значений полей. (или их частей, если указаны ограничения ширины полей)

   
 
 автор: Eugene77   (20.02.2008 в 17:25)   письмо автору
 
   для: Trianon (...)   (20.02.2008 в 15:11)
 

Спасибо! Не знал, что такое возможно.
Подскажите, пожалуйста, синтаксис запроса создающего ключ на несколько полей.

   
 
 автор: mechanic   (20.02.2008 в 18:35)   письмо автору
 
   для: Eugene77   (20.02.2008 в 17:25)
 

ALTER TABLE tab ADD UNIQUE (col1, col2);

   
Rambler's Top100
вверх

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