powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как удалить с таблицы повторяющееся записи??
11 сообщений из 11, страница 1 из 1
Как удалить с таблицы повторяющееся записи??
    #32726764
TarasV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как удалить с таблицы повторяющееся записи(в одном поле)??
Но оставиль одну запись - любую.
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32726771
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
use d:\t1 in 0
select * from t1 into curs qq1 group by field1
use in t1
select qq1
copy to d:\t1.dbf
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32726829
SergeyPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leafuse d:\t1 in 0
select * from t1 into curs qq1 group by field1
use in t1
select qq1
copy to d:\t1.dbf
Грубо и не правильно, даже не работает!
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32726845
TarasV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyPl leafuse d:\t1 in 0
select * from t1 into curs qq1 group by field1
use in t1
select qq1
copy to d:\t1.dbf
Грубо и не правильно, даже не работает!

Согласен!!!
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32726853
TarasV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица
ID name
1 n1
2 n2
2 n22
2 n222
3 n3

Надо оставить только одну запись с ID=2 и любим name
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32726947
SergeyPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. форум MS SQL Server и благодарим тех, кто там отвечает!
К сожалению, VFP не поддерживает удаление по запросу.
Вариант без сохранения уникального кода (: для таблицы с первичным ключом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
use t_test in  0 
SELECT * FROM t_test ;
   INTO CURSOR Cur1 ;
   WHERE f_id in (select min(f_id) as f_id ;
                        from t_test ;
                        group by f_name having count(f_id)> 1 )

select t_test
zap
INSERT INTO t_test (f_name,f_pfone) ;
         SELECT f_name,f_pfone FROM cur1
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32726949
SergeyPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TarasVТаблица
ID name
1 n1
2 n2
2 n22
2 n222
3 n3

Надо оставить только одну запись с ID=2 и любим name

Для этого варианта:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
use t_test in  0 
SELECT * FROM t_test ;
   INTO CURSOR Cur1 ;
   WHERE id in (select min(id) as id ;
                        from t_test ;
                        group by name having count(id)> 1 )

select t_test
zap
INSERT INTO t_test (id,name) ;
         SELECT id,name FROM cur1
Для таблицы спервичным ключом придется организовать более сложную обработку...
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32726983
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyPl
К сожалению, VFP не поддерживает удаление по запросу.


Простите за глупый вопрос - А Вы сами то пробовали?

Так - как версия не указана то открою Вам секрет - с 8 версии это уже поддерживается, а в 9 сняты уже многие ограничения...

Например:

Код: plaintext
DELETE FROM tmp.dbf WHERE codeco in (select codeco FROM tmp.dbf WHERE codeco='A')

уже работает
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32727207
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грубо и не правильно, даже не работает!
у меня запрос из Вашей тестовой таблицы выбрал
1 n1
2 n222
3 n3

те любое значение
где не работает ?
считали зарплату было куча записей двойных всё время так делали и всё до копейки сходилось
так где грабли?
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32727227
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внимательно следите за руками

1) Использование индекса типа UNIQUE

Код: plaintext
1.
2.
3.
4.
5.
6.
select MyTab
DELETE ALL
SET DELETED OFF
INDEX ON MyField TO idxUnique UNIQUE COMPACT
RECALL ALL
SET INDEX TO
DELETE FILE idxUnique.idx

2) Если ЕСТЬ индекс по нужному полю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SET DELETED ON
LOCAL lvPrevValue
select MyTab
SET ORDER TO MyField
GO TOP
SCAN
	lvPrevValue = MyTab.MyField
	SKIP
	DELETE WHILE MyTab.MyField=m.lvPrevValue
	SKIP - 1 
ENDSCAN

3) Если НЕТ индекса по нужному полю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SET DELETED ON
LOCAL lvPrevValue, lnRecno
select MyTab
SET ORDER TO  0 
GO TOP
SCAN
	lvPrevValue = MyTab.MyField
	lnRecno = Recno()
	DELETE FOR MyTab.MyField=m.lvPrevValue AND Recno()<>m.lnRecno
	GO m.lnRecno
ENDSCAN
...
Рейтинг: 0 / 0
Как удалить с таблицы повторяющееся записи??
    #32727385
SergeyPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TO Sergey Ch !!!
Признаю! В 8 работает !!! :)

Тогда совсем красиво:

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT * FROM t_test ;
   INTO CURSOR Cur1 ;
   WHERE f_id in (select min(F_ID) as F_ID ;
      from t_test group by F_NAME having count(F_ID)> 1 )

DELETE FROM t_test WHERE f_id NOT IN (SELECT f_id FROM cur1)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как удалить с таблицы повторяющееся записи??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]