Цитата:
Сообщение от BetaCoder
Всем доброго времени суток.
в таблице rss есть поле link
мне нужно чтобы по этому полю искались дубликаты, проще говоря чтобы в этой таблице не было повторяющихся записей, а проверять это получится только по полю link, потому что ссылка уникальна, а остальные поля, такие как Тема - не уникальны
|
Вот что вы попросили. Найти дубликаты. Я вам и дал код для поиска дубликатов:
Код:
ADOQuery.SQL.Text := 'select Link from rss group by link having Count(Link)>1';
ADOQuery.Open;
В итоге вы получите в ADOQuery набор данных с которыми что-то надо делать, как минимум имеет смысл посмотреть их.
Что-бы удалить уже имеющиеся дубликаты я вам дал второй код:
Код:
ADOQuery.SQL.Text := 'delete Link where id in (select Max(id) from rss group by Link having Count(Link)>1)';
ADOQuery.ExecSQL;
НО для выполнения второго запроса надо уже использовать метод ADOQuery.ExecSQL т.к. запросы на удаление,вставку,изменение данных невозвращает никакого набора данных.
Теперь вы уже хотите проверять данные перед вставкой на дубликаты, а это уже третий запрос. Третьего запроса можно избежать, если вы на таблицу rss построите уникальный индекс по полю Link, но создать уникальный индекс на данные содержащие повторяющиеся значения невозможно, поэтому прежде чем его создать пропустите свои данные через запрос на удаление, о котором я писал чуть выше. Об этом я писал вам в теме из раздела БД.