2011-03-26 61 views
0

我有這樣如何修改或在foxpro中運行此查詢?

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


我的目標SQL查詢是不刪除該id.So之前我希望看到該表中的所有記錄那些將要被刪除剩餘的記錄。
如果你知道如何刪除記錄,你也可以給我刪除命令。

+0

根據https://msdn.microsoft.com/en-us/library/6kt4x6zx(v=vs.71).aspx或本機VFP DELETE命令,您可以使用SQL DELETE命令msdn.microsoft.com/en-us/library/wytye2b3(v=vs.71).aspx。其他人在下面的答案中給出的例子。 SQL版本執行記錄鎖定,但本機命令可以更快。 – Caltor 2017-04-22 21:02:01

回答

0

問題:

10005347797和1006009285的類型是'串'嗎?

如果是這樣,試試這個( 'ALLTRIM' 以防萬一):

刪除的表名不 INLIST(ALLTRIM(字段名), '10005347797', '1006009285')

否則

只使用不帶單引號

ENDIF

  • 順便說一句,英語不是我的第一語言
+0

這甚至是有效的VFP?這當然不是有效的SQL。 – Caltor 2017-04-22 20:56:42

+0

如果要指定表名/工作區,則需要按照https://msdn.microsoft.com/zh-CN/library/wytye2b3(v=vs.71).aspx使用IN子句 – Caltor 2017-04-22 20:59:59

1

下面的代碼演示瞭如何使用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

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的任何版本。但它沒有經過測試。