此声明中的错误在哪里?
query = "DELETE TOP 10 FROM table WHERE field LIKE \"something*\""
我在查询sytax上收到错误。
感谢。
答案 0 :(得分:3)
您无法将TOP
与DELETE
一起使用。您必须识别行,然后删除它们。
答案 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
等查询功能。