如何在“In”子句中的visual foxpro中运行超过24个值?

时间:2011-03-28 04:59:09

标签: foxpro visual-foxpro

我正在使用foxpro 5.0

我有超过3000条记录来运行查询。例如我的查询是

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

它不会执行。因为foxpro在In子句中只允许24条记录。如何执行此查询?
任何简化的想法。

2 个答案:

答案 0 :(得分:2)

以下代码演示了如何根据另一个表中的记录删除一个表中的记录。

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)

答案 1 :(得分:0)

您可以尝试调查SYS(3055)函数,该函数允许您调整FOR和WHERE子句中允许的复杂性。

但是我会得到你想要保存到临时游标中的fieldname值列表,比如称为'_keep',然后执行:

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