![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление дубликатов в DBF [D7, dBase, FoxPro]
Олег © (2008-06-26 07:25:00)Мастера, подскажите почему не работает этот запрос?
DELETE t1 FROM tab t1 , tab t2 WHERE t1.ID = t2.ID
Запрос выполняю при помощи TQuery.
Ошибка:
Invalid use of keyword.
Token: t1
Виталий Панасенко(дом) (2008-06-26 12:16:00) [1]
> Palladin © (26.06.08 10:23) [16]
>
> а мне'то что пробовать, я и так вижу, что удалятся обе записи
ну, я как истинный хохол - не повирю, докы не перевирю:-)... работает
Олег (2008-06-26 11:12:00) [2]
> Виталий Панасенко(дом) (26.06.08 09:23) [9]
> delete from tablename t1 where t1.key = (select t2.key from
> tablename t2 where t2.key=t1.key group by t2.key having
> count(*)>1)t2 и t1 - одна и та же таблица
Спасибо! Но действительно слишком долго...
поэтому за это
> Виталий Панасенко(дом) (26.06.08 09:27) [10]
Огромное спасибо! :)
Palladin (2008-06-26 10:23:00) [3]а мне'то что пробовать, я и так вижу, что удалятся обе записи
Виталий Панасенко(дом) (2008-06-26 10:22:00) [4]запрос такого вида - работает, т.е. ключ - одно поле
Виталий Панасенко(дом) (2008-06-26 10:18:00) [5]
> Palladin © (26.06.08 10:08) [13]
>
>
> > Виталий Панасенко © (26.06.08 10:01) [12]
>
> а пробовал с двумя дублями?
> а правда одну запись оставляет?
а сам не пробовал?
Palladin (2008-06-26 10:08:00) [6]
> Виталий Панасенко © (26.06.08 10:01) [12]
а пробовал с двумя дублями?
а правда одну запись оставляет?
Виталий Панасенко (2008-06-26 10:01:00) [7]
> Palladin © (26.06.08 09:32) [11]
главное, работает.. а можно или нет... это другой вопрос..:-)
Palladin (2008-06-26 09:32:00) [8]и что? в FoxPro прямо так можно?
t1.key = (select t2.key from tablename t2 where t2.key=t1.key group by t2.key having count(*)>1)
Виталий Панасенко(дом) (2008-06-26 09:27:00) [9]только быстрее это дело сделать при помощи небольшой программки из двух компонентов - кверика и тейбла.. построить индекс по ключу, сделать его активным для тейбла, а в кверик выбрать ключ и количество повторений. далее тейблом ищем первую запись по ключу, и в цикле удаляем N-1 раз.. где N - количество повторений для данного значения ключа.. вчера такое нужно было то же сделать.. на 50000 записях запросом можно было выспаться.. а программка слепленная за 5 минут отработала считанные секунды
Виталий Панасенко(дом) (2008-06-26 09:23:00) [10]delete from tablename t1 where t1.key = (select t2.key from tablename t2 where t2.key=t1.key group by t2.key having count(*)>1)
t2 и t1 - одна и та же таблица
Олег (2008-06-26 08:58:00) [11]любую)
Sergey13 (2008-06-26 08:55:00) [12]> [5] Олег (26.06.08 08:47)
> одну надо оставить
Какую конкретно?
Palladin (2008-06-26 08:55:00) [13]расслабся, без существования уникального ключа одним запросом ты этого не сделаешь
Олег (2008-06-26 08:47:00) [14]
> Удалять надо все дублирующиеся записи или одну какую-то
> оставлять?
одну надо оставить
> А что ты используешь для удаления?
TQuery
Anatoly Podgoretsky (2008-06-26 08:42:00) [15]А что ты используешь для удаления?
Дельфи же не понимает таких слов DELETE t1 FROM tab t1 , tab t2 WHERE t1.ID = t2.ID
И что об этом говорит твоя справка?
Sergey13 (2008-06-26 08:42:00) [16]> [2] Олег (26.06.08 07:48)
> Может есть какой другой способ удалить из DBF файла дублирующиеся по одному полю записи?
Удалять надо все дублирующиеся записи или одну какую-то оставлять?
Олег (2008-06-26 07:48:00) [17]Этот пример я нашел где-то на просторах интернета... если убрать эту t1 то ругается на запятую.
Может есть какой другой способ удалить из DBF файла дублирующиеся по одному полю записи?
Loginov Dmitry (2008-06-26 07:41:00) [18]> Invalid use of keyword.
> Token: t1
> DELETE t1FROM
Ругается на t1. Оно здесь лишнее.