powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL - удаление дубликатов.
10 сообщений из 10, страница 1 из 1
SQL - удаление дубликатов.
    #32709160
Bobik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задачка проста. В таблице 3 поля: id, fname, lname. Нужно убрать все строки, где fname + lname повторяются, точнее, должна остаться одна строка, а все ее дубликаты удалить. Уже час мучаюсь, ничего не выходит. Помогите!
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32709190
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял задачу - то скорей всего так:
DELETE FROM table WHERE fname = lname
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32709310
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skoree vsego tak (esli id - nomer):

DELETE *
FROM Table
WHERE id NOT in (SELECT max(id)
FROM Table
GROUP BY fname, lname)
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32709317
Код: plaintext
SELECT id, count(*) c FROM table GROUP BY fname,lname HAVING c> 1 

Это даст список id, которые повторяются (если хочешь минимальную из повторяющихся - поставь в запросе MIN(id)).
А потом любым скриптовым языком подставь эти id в такой запрос

Код: plaintext
DELETE FROM table WHERE id IN (id1,id2,...idn)

Это удалит только один дубликат:)
Перейти к началу сего текста, пока первый запрос что-то вернёт...

Другие предложения?
Это не оч. красивое решение.
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32710413
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есчо есть мой любимый вариант - отсечение по ключу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
=================================================
BEGIN;
CREATE TEMPORARY TABLE sex (
  `Id` int( 10 ),
  `fname` varchar( 25 ) NOT NULL,
  `lname` varchar( 25 ) NOT NULL,
  UNIQUE KEY `fname` (`fname`),
  UNIQUE KEY `lname` (`lname`)
) TYPE=InnoDB;
INSERT IGNORE INTO sex SELECT * FROM моятаблица;
DELETE FROM FROM моятаблица;
INSERT IGNORE INTO моятаблица SELECT * FROM sex;
DROP TABLE sex;
COMMIT;
=================================================
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32711168
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавить нечего! Само верное решение!

Код: plaintext
 .  http://sql.ru/]mahoune  
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32711586
Bobik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RiskaSkoree vsego tak (esli id - nomer):

DELETE *
FROM Table
WHERE id NOT in (SELECT max(id)
FROM Table
GROUP BY fname, lname)
Это то, что надо. Спасибо!
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32910496
нашёл в синтаксисе ALTER TABLE

Код: plaintext
ALTER IGNORE TABLE tbl_name ADD UNIQUE KEY `fname` (`fname`);


Код: plaintext
1.
2.
3.
4.
5.
`IGNORE' is a MySQL extension to SQL-92.  It controls how `ALTER
     TABLE' works if there are duplicates on unique keys in the new
     table.  If `IGNORE' isn't specified, the copy is aborted and
     rolled back.  If `IGNORE' is specified, then for rows with
     duplicates on a unique key, only the first row is used; the others
     are deleted. 
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32910771
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobik RiskaSkoree vsego tak (esli id - nomer):

DELETE *
FROM Table
WHERE id NOT in (SELECT max(id)
FROM Table
GROUP BY fname, lname)
Это то, что надо. Спасибо!

delete * from table ??? что то новое
...
Рейтинг: 0 / 0
SQL - удаление дубликатов.
    #32913364
Apache_xp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, вы прежде чем отвечать тестить ответы не пробовали, а то написано, кто во что горазд.
fname + lname?
Это уникальность по обоим полям одновременно?
тогда в решении BigHarry надо unique key ставить по 2 полям сразу а не в отдельности.
Опять таки в вопросе надо указывать версию мускуля
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL - удаление дубликатов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]