powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удалить одинаковык записи, синтакс. ошибка
8 сообщений из 8, страница 1 из 1
Удалить одинаковык записи, синтакс. ошибка
    #35428725
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо удалить одинаковые записи , нашёл ссылку на этом форуме
http://www.sql.ru/forum/actualthread.aspx?tid=387962&hl=%f3%e4%e0%eb%e8%f2%fc+%ee%e4%e8%ed%e0%ea%ee%e2%fb%e5+%e7%e0%ef%e8%f1%e8
Переписал команду
delete ;
from spisok s1 ;
inner join (select max(id) as maxId, tabno,inn,strax from spisok group by 2,3,4 having count(*)>1) s2 ;
on s1.tabNo=s2.tabNo and s1.inn=s2.inn and s1.strax=s2.strax ;
where id<>maxId

на свою

delete ;
from pol_zl s1 ;
inner join (SELECT MAX(pzl_id) as maxid,dog_k_id,zl_id, polis FROM pol_zl GROUP BY 2,3,4 HAVING COUNT(*) >1) s2 ;
on s1.zl_id=s2.zl_id and s1.polis=s2.polis and s1.dog_k_id=s2.dog_k_id ;
where pzl_id<>maxId
Почему то выдаёт синтаксическую ошибку, но я не могу увидеть
PS: (VFP9)
...
Рейтинг: 0 / 0
Удалить одинаковык записи, синтакс. ошибка
    #35429168
Agasi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в командном окне:
select * distinct from имя таблици,

потом export в другую таблицу
...
Рейтинг: 0 / 0
Удалить одинаковык записи, синтакс. ошибка
    #35430025
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Agasiв командном окне:
select * distinct from имя таблици,

потом export в другую таблицу

Но distinct удаляет одинаковые записи по всем полям, а у меня поле pzl_id уникальное, и имеет различные значения, но совпадение по трём полям dog_k_id, zl_id, polis надо убрать

А почему export, а не copy?
...
Рейтинг: 0 / 0
Удалить одинаковык записи, синтакс. ошибка
    #35430515
Agasi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда делаы копию таблици, и sele distinct dog_k_id, zl_id, polis from .....
потом update аснавную таблицу с копии
...
Рейтинг: 0 / 0
Удалить одинаковык записи, синтакс. ошибка
    #35430780
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну ты думаешь я тут профи в SQL update, написано же новичок, скажи как этот update правильно написать...есть база с четыремя полями, в базе поле pzl_id уникальное, и мне надо удалить повторяющиеся записи по оставшимся трём полям
...
Рейтинг: 0 / 0
Удалить одинаковык записи, синтакс. ошибка
    #35430889
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй более простую конструкцию

Код: plaintext
1.
2.
3.
4.
5.
6.
DELETE FROM pol_zl ;
WHERE EXISTS(SELECT "x" FROM pol_zl t2 ;
	WHERE t2.pzl_id > pol_zl.pzl_id ;
		AND pol_zl.zl_id=t2.zl_id ;
		AND pol_zl.polis=t2.polis ;
		AND pol_zl.dog_k_id=t2.dog_k_id )

Сравнение ключевых полей именно "больше" (или "меньше" - без разницы). Использовать "не равно" - нельзя, поскольку в этом случае удаляться вообще все записи, имеющие дубли, а не только сами дубли.

А сообщение о синтаксической ошибке связано с тем, что если в опции FROM используется больше одной таблицы-источника, то после опции DELETE надо явно указать таблицу в которой осуществялется удаление

Код: plaintext
DELETE pol_zl FROM pol_zl s1 INNER JOIN ...
...
Рейтинг: 0 / 0
Удалить одинаковык записи, синтакс. ошибка
    #35430897
подправь так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
delete pol_zl ;
from pol_zl s1 ;
	inner join (SELECT MAX(pzl_id) as maxid,            ;
                                      dog_k_id,             ;
                                      zl_id,                ;
                                      polis                 ;
		  FROM pol_zl              ;
		  GROUP BY  2 , 3 , 4            ;
		  HAVING COUNT(*) > 1 ) s2   on s1.zl_id=s2.zl_id and s1.polis=s2.polis and s1.dog_k_id=s2.dog_k_id ;
where s1.pzl_id<>maxId
...
Рейтинг: 0 / 0
Удалить одинаковык записи, синтакс. ошибка
    #35431162
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо всем ответившим
pzl_idzl_id dog_k_id polis112321233123445654566789
Вот типа такая таблица,
по delete pol_zl from pol_zl s1 inner join....удаляет почему-то все записи, второе в синтаксисе(DELETE FROM [DatabaseName!]TableName [WHERE... ) не указано, что можно писАть delete pol_zl from pol_zl , да и в указанной ссылке не было написано между delete и from имя таблицы;
по DELETE FROM pol_zl WHERE EXISTS....классно всё удаляет, но не разбивается на подзапросы почему-то...т.е. хотел сделать запрос, тот что в скобках, посмотреть что он выдаст, а он выдал .NULL. :-)...
Ещё раз спасибо..
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удалить одинаковык записи, синтакс. ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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