Форум: "Базы";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];
Внизпомогите сделать sql запрос Найти похожие ветки
← →
diww (2002-09-25 15:38) [0]как выбрать повторяющиеся записи из бд (т.е. те записи, значения по полям field1 ... fieldN совпадают)?
← →
Johnmen (2002-09-25 15:46) [1]SELECT field1, ... fieldN FROM Table
GROUP BY field1, ... fieldN
HAVING COUNT(*)>1
← →
diww (2002-09-25 15:50) [2]работает....
большое спасибо
← →
diww (2002-09-25 17:20) [3]а как еще и удалить повторяющиеся записи, т.е. если запись в бд встречалась несколько раз, то чтобы эта запись осталась в единственном экземпляре?
← →
Johnmen (2002-09-25 17:28) [4]Если повторяющиеся записи полностью идентичны, то никаким запросом нельзя удалить хотя бы одну из них !
(Отсутствует критерий однозначной идентификации)
← →
Sedunov Vitaly (2002-09-25 17:29) [5]А вот насчет удаления придется свою программу писать. Наверняка же таблицы связаны. Например, двойные клиенты в справочнике клиентов и их заказы, которые надо объединить. Делается так: выбираешь максимальный ИД клиента среди одинаковых, делаешь так, чтобы все заказы были на двойнике с максимальным ИД, остальных удаляешь.
← →
Виталий Панасенко (2002-09-25 18:58) [6]Удалить можно так:
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)
← →
Johnmen (2002-09-25 20:14) [7]>Виталий Панасенко (25.09.02 18:58)
А повнимательней прочитать diww (25.09.02 17:20) ???
>>>чтобы эта запись осталась в единственном экземпляре?
А ты квасишь все экземпляры !
← →
Виталий Панасенко (2002-09-26 08:32) [8]>Johnmen
А ты попробуй, выполни и увидиш, что останется ОДИН экземпляр. Я так делал и все работает. Ведь подзапрос выполняется для КАЖДОЙ записи и если count(*)=1, то условие не выполняется и запись остается. Единственное, что при значениие полей NULL запрос чуть меняется
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c