powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите найти дубли
7 сообщений из 7, страница 1 из 1
Помогите найти дубли
    #35472361
SET TALK OFF

CREATE CURSOR CUR1 (I1 INTEGER, I2 INTEGER)

INSERT INTO CUR1 (I1,I2) VALUES (1,1)
INSERT INTO CUR1 (I1,I2) VALUES (2,1)
INSERT INTO CUR1 (I1,I2) VALUES (3,2)
INSERT INTO CUR1 (I1,I2) VALUES (4,3)
INSERT INTO CUR1 (I1,I2) VALUES (5,3)
INSERT INTO CUR1 (I1,I2) VALUES (6,4)

* DELETE FROM CUR1 WHERE - здесь пока не знаю что писать ??

BROWSE
USE

* мне надо получить
* (1,1)
* (2,1)
* (4,3)
* (5,3)
* подскажите что надо написать в DELETE FROM ;
* надо найти все записи в которых значения I2 равны друг другу
...
Рейтинг: 0 / 0
Помогите найти дубли
    #35472459
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БлагодарностьSET TALK OFF

CREATE CURSOR CUR1 (I1 INTEGER, I2 INTEGER)

INSERT INTO CUR1 (I1,I2) VALUES (1,1)
INSERT INTO CUR1 (I1,I2) VALUES (2,1)
INSERT INTO CUR1 (I1,I2) VALUES (3,2)
INSERT INTO CUR1 (I1,I2) VALUES (4,3)
INSERT INTO CUR1 (I1,I2) VALUES (5,3)
INSERT INTO CUR1 (I1,I2) VALUES (6,4)

* DELETE FROM CUR1 WHERE - здесь пока не знаю что писать ??

BROWSE
USE

* мне надо получить
* (1,1)
* (2,1)
* (4,3)
* (5,3)
* подскажите что надо написать в DELETE FROM ;
* надо найти все записи в которых значения I2 равны друг другу

Запросом то найти дубли можно, а вот какой дубль именно удалять думаю наврядли сможешь объяснить, предлагаю пройтись циклом по этому запросу и по всем твоим правилам найти имеено те записи которые необходимо удалить, из того что ты написал я так и не понял какие именно записи надо удалять... Так как по условию что именно l2 равняются по тому что ты выдал в результате не сходится с условием, но в цикле можешь организовать любые условия.
...
Рейтинг: 0 / 0
Помогите найти дубли
    #35472714
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * FROM CUR1 WHERE I2 IN (SELECT I2 FROM CUR1 GROUP BY I2 HAVING COUNT(*)>1)
...
Рейтинг: 0 / 0
Помогите найти дубли
    #35472802
Спасибо
...
Рейтинг: 0 / 0
Помогите найти дубли
    #35472983
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непомню только, в подзапросе можно использовать having.
Если да, тогда одним DML запросом можно удалить дубли.
Код: plaintext
1.
2.
3.
delete from cur1
from (select min(l1) as l1Min, l2 from cur1 group by l2 having count(*)> 1 ) inCur
where cur1.l2=inCur.l2 and cur1.l1<>inCur.l1Min
Так можно выбрать дубли:
Код: plaintext
1.
2.
3.
4.
5.
6.
select *
from cur1
where l2 in 
(
select l2 from cur1 group by l2 having count(*)> 1 
)
...
Рейтинг: 0 / 0
Помогите найти дубли
    #35473005
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут ошибочка, не убрал лишний from :)
удалить только дубли
Код: plaintext
1.
2.
3.
delete cur1
from (select min(l1) as l1Min, l2 from cur1 group by l2 having count(*)> 1 ) inCur
where cur1.l2=inCur.l2 and cur1.l1<>inCur.l1Min
удалить все записи, которые было более двух
Код: plaintext
1.
2.
3.
delete cur1
from (select l2 from cur1 group by l2 having count(*)> 1 ) inCur
where cur1.l2=inCur.l2 
...
Рейтинг: 0 / 0
Помогите найти дубли
    #35482171
Спасибо всем. Тема была создана для написания вспомогательной
утилиты для удаления дублей файлов в каталоге после спутниковой
рыбалки. Что получилось прикладываю здесь. Любая критика
приветствуется.

Да есть утилиты типа CloneSpy, DupKiller, но что то их работа
мне не очень понравилась.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите найти дубли
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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