![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите сделать sql запрос [D5, dBase, FoxPro]
diww © (2002-09-25 15:38:00)как выбрать повторяющиеся записи из бд (т.е. те записи, значения по полям field1 ... fieldN совпадают)?
Виталий Панасенко (2002-09-26 08:32:00) [1]>Johnmen
А ты попробуй, выполни и увидиш, что останется ОДИН экземпляр. Я так делал и все работает. Ведь подзапрос выполняется для КАЖДОЙ записи и если count(*)=1, то условие не выполняется и запись остается. Единственное, что при значениие полей NULL запрос чуть меняется
Johnmen (2002-09-25 20:14:00) [2]>Виталий Панасенко (25.09.02 18:58)
А повнимательней прочитать diww (25.09.02 17:20) ???
>>>чтобы эта запись осталась в единственном экземпляре?
А ты квасишь все экземпляры !
Виталий Панасенко (2002-09-25 18:58:00) [3]Удалить можно так:
delete from tbl1 t1
where 1<(select count(*) from tbl1 t2 where t1.field1=t2.field1 and t1.field2=t2.field2 and ... and t1.fieldN=t2.fieldN)
Sedunov Vitaly (2002-09-25 17:29:00) [4]А вот насчет удаления придется свою программу писать. Наверняка же таблицы связаны. Например, двойные клиенты в справочнике клиентов и их заказы, которые надо объединить. Делается так: выбираешь максимальный ИД клиента среди одинаковых, делаешь так, чтобы все заказы были на двойнике с максимальным ИД, остальных удаляешь.
Johnmen (2002-09-25 17:28:00) [5]Если повторяющиеся записи полностью идентичны, то никаким запросом нельзя удалить хотя бы одну из них !
(Отсутствует критерий однозначной идентификации)
diww (2002-09-25 17:20:00) [6]а как еще и удалить повторяющиеся записи, т.е. если запись в бд встречалась несколько раз, то чтобы эта запись осталась в единственном экземпляре?
diww (2002-09-25 15:50:00) [7]работает....
большое спасибо
Johnmen (2002-09-25 15:46:00) [8]SELECT field1, ... fieldN FROM Table
GROUP BY field1, ... fieldN
HAVING COUNT(*)>1