SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.06.2008 14:36:09

Валет-69
Завсегдатай
Зарегистрирован: 23.05.2008
Сообщений: 37

Удаление фактических копий

Пожалуйста, напишите команду удаления из строкового поля всех ячеек, в которых повторяется одно и то же содержание.
Требуется удалить только "копии". Все "оригиналы" должны остаться в неприкосновенности.

Неактивен

 

#2 18.06.2008 18:14:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Удаление фактических копий

Честно говоря, не совсем понял вопрос. Давайте я попробую его перефразировать.

У Вас есть таблица вида CREATE TABLE t (id INT, value VARCHAR(10)) и Вы хотите
из нее удалить все строки с повторяющимися value.

Если так, то можете попробовать сделать что-то типа
DELETE FROM t WHERE id NOT IN (SELECT MIN(id) FROM t GROUP BY value);

Неактивен

 

#3 18.06.2008 22:00:43

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Удаление фактических копий

Можно также через JOIN


DELETE t
FROM t
LEFT JOIN (SELECT MIN(id) AS unique_id FROM t GROUP BY value) AS ut
-- присвоив табличному подзапросу псевдоним, можно обращаться к его колонкам, в т.ч. для конструирования JOIN'ов
ON t.id = ut.unique_id
WHERE ut.unique_id IS NULL
 

Отредактированно LazY (18.06.2008 22:03:13)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson