Как изменить или запустить этот запрос в foxpro? - PullRequest
0 голосов
/ 26 марта 2011

У меня есть SQL-запрос, подобный этому

   select * from tablename  where Fieldname not in (10005347797,1006009285)

Моя цель состоит в том, чтобы удалить оставшиеся записи, не входящие в этот идентификатор. Перед этим я хочу просмотреть все записи в этой таблице, которые будут удалены.Если вы знаете, как удалить эти записи, вы можете также дать мне команду delete.

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Следующий код демонстрирует, как использовать команду SQL для удаления записей.

CREATE CURSOR Table1 (pk I)
INSERT INTO Table1 (pk) VALUES(1)
INSERT INTO Table1 (pk) VALUES(2)
INSERT INTO Table1 (pk) VALUES(3)
INSERT INTO Table1 (pk) VALUES(4)
INSERT INTO Table1 (pk) VALUES(5)

SELECT Table1.* FROM Table1 WHERE Table1.pk NOT IN (2, 4)

DELETE FROM Table1 WHERE Table1.pk NOT IN (2, 4)
1 голос
/ 24 января 2012

Команды FoxPro, чтобы получить результат для вас:

BROWSE LAST FOR NOT INLIST(FIELDNAME, 10005347797, 1006009285) && view/edit the records
DELETE FOR NOT INLIST(FIELDNAME,10005347797, 1006009285) && mark the records for deletion
PACK && permanently delete the marked records

Примечание. Исходя из моего опыта работы с FoxPro, эти команды должны работать с любой версией FoxPro. Однако это не проверено.

0 голосов
/ 26 марта 2011

Вопрос:

типа 10005347797 и 1006009285 являются «строковыми»?

если так, попробуйте это (на всякий случай «alltrim»):

удалить имя таблицы не inlist (ALLTRIM (Fieldname), '10005347797', '1006009285')

еще

просто использовать без одинарных кавычек

ENDIF

  • кстати, английский не мой первый язык
...