删除和访问

时间:2010-05-28 12:48:19

标签: c# database ms-access

此声明中的错误在哪里?

query = "DELETE TOP 10 FROM table WHERE field LIKE \"something*\""

我在查询sytax上收到错误。

感谢。

7 个答案:

答案 0 :(得分:3)

您无法将TOPDELETE一起使用。您必须识别行,然后删除它们。

答案 1 :(得分:1)

尝试

query = "DELETE * from (Select TOP 10  * FROM table WHERE field LIKE \"something*\")"

虽然不能直接使用“删除”顶部,但可以将其用于派生表,然后从派生表中使用“删除”。

答案 2 :(得分:1)

尝试

Delete * from [tablename] where ID in (Select Top 10 ID from [Tablename] Where [Field] Like '*Condition*'

这样,你不会在*(所有)中查找*(所有内容)。

答案 3 :(得分:0)

注意引号 喜欢'某事*'

答案 4 :(得分:0)

如果您无法一次完成所有删除操作,并且无法选择迁移到更具伸缩性的数据库,则可以尝试根据其他字段对数据进行分区并执行多次删除。

假设您有一个名为name的字段,并且它的分布在整个字母表中大致均匀。您可以执行多次删除:

query0 = "DELETE FROM table WHERE field LIKE \"something*\" and name <= \"D\""
query1 = "DELETE FROM table WHERE field LIKE \"something*\" and name <= \"H\""
query2 = "DELETE FROM table WHERE field LIKE \"something*\" and name <= \"L\""
query3 = "DELETE FROM table WHERE field LIKE \"something*\" and name <= \"P\""
query4 = "DELETE FROM table WHERE field LIKE \"something*\" and name <= \"T\""
query5 = "DELETE FROM table WHERE field LIKE \"something*\" and name <= \"X\""
query6 = "DELETE FROM table WHERE field LIKE \"something*\"

答案 5 :(得分:0)

你可以使用像这样的嵌套查询来完成这项工作......


DELETE FROM [TABLE] WHERE [Col1] = (
SELECT TOP 10 [Col1] FROM [TABLE] WHERE [criteria] ORDER BY [criteria]
);

请注意,在子查询中,您只需通过指定要从Col1中删除的内容将列表输入主删除查询,并且您拥有的条件越多,您需要的资源就越少,因为删除的删除选项将更多

为了测试这个,首先省略语法的DELETE FROM部分,然后运行查询,这样你就可以看到你将在DELETE语句中提供的内容......

SELECT TOP 10 [Col1] FROM [TABLE] WHERE [criteria] ORDER BY [criteria]

如果您的子查询返回的结果超过10个,那么使用ORDER BY子句非常重要,这样您就可以更高程度地控制要删除的内容。

答案 6 :(得分:-1)

根据您正在使用的数据库,这可能会也可能不会,但您可以编写如下的查询:

DELETE FROM TBLWHATEVER WHERE FLDWHATEVER LIKE 'something%' AND ROWNUM < 10

这取决于您的数据库是否具有ROWNUM等查询功能。