удаление записей

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
kolobok
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 18.05.2005 (Ср) 17:25

удаление записей

Сообщение kolobok » 18.05.2005 (Ср) 17:27

есть таблица два поля: name-содержит одинаковые записи и date . Нужно удалить эти одинаковые записи , оставивь те которым соответствует более ранняя дата Например : есть иванов 01.01.01
иванов 02.02.02

надо оставить только иванов 01.01.01

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 18.05.2005 (Ср) 21:39

Код: Выделить всё
DELETE FROM [Table]
WHERE
    (SELECT COUNT([name])
        FROM [Table] AS t2
        WHERE t2.[name]=[Table].[name])>1
AND
    [date] <> (SELECT MIN([date])
        FROM [Table] AS t3
        WHERE t3.[name]=[Table].[name])

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 18.05.2005 (Ср) 21:57

Этот вопрос мне задали при собеседовании на текущем месте работы, и тогда я на него, можно сказать, не ответил :oops: . Сейчас - отвечу:
Код: Выделить всё
delete T1
from Table1 T1
  left join (
    select Name, MIN(Date) as [Date]
    from Table1
    group by Name
  ) SQ on T1.Name = SQ.Name
where T1.Date != SQ.Date

Знак неравенства в WHERE можно заменить на "больше" - в зависимости от конкретной СУБД, это может слегка улучшить производительность запроса.

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 20.05.2005 (Пт) 7:03

Ennor, объясни, пожалуйста, что такое LEFT JOIN () .
Век живи - век учись!
www.detal-plast.narod.ru

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.05.2005 (Пт) 7:40

Смысл: "объединить ВСЕ элементы из левой таблицы и только те элементы из правой таблицы, для которых существуют сопоставления".
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron