Как запустить более 24 значений в Visual FoxPro в предложении «In»? - PullRequest
1 голос
/ 28 марта 2011

Я использую foxpro 5.0

У меня более 3000 записей для выполнения запроса. Например, мой запрос

delete from mytable.dbf where fieldname not in (1,2,3,......3909)

Не выполняется. Потому что foxpro разрешает только 24 записи в предложении In.выполнить этот запрос?Любые идеи упрощения.

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

Следующий код демонстрирует, как можно удалить записи в одной таблице на основе записей в другой таблице.

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)

CREATE CURSOR Table2 (pk I)
INSERT INTO Table2 (pk) VALUES(2)
INSERT INTO Table2 (pk) VALUES(4)


DELETE FROM Table1 WHERE Table1.pk IN (SELECT Table2.pk FROM Table2)
0 голосов
/ 28 марта 2011

Вы можете попробовать исследовать функцию SYS (3055), которая позволяет настроить сложность, допустимую в предложениях FOR и WHERE.

Однако я бы получил список значений имени поля, которые вы хотите сохранить во временном курсоре, скажем, под названием «_keep», а затем выполните:

Delete From mytable where fieldname not in (select fieldname from _keep)
Use In Select("_keep")
...