我正在尝试删除表格中除最近的3,000项以外的所有项目。该表有105,000条记录。
我正在尝试这个,但是错误会产生错误的语法。
delete tRealtyTrac where creation in( select top 103000 from tRealtyTrac order by creation)
答案 0 :(得分:19)
删除语法与您的语法略有不同。一个例子是:
DELETE FROM tRealtyTrac
WHERE creation in( select top 103000 creation from tRealtyTrac order by creation)
请注意“from”关键字是如何产生的。这就是说我们要从名为tRealtyTrac
的表中删除我预见到的一个问题是,你可能想要不使用创作...
相反:
DELETE FROM tRealtyTrac
WHERE someuniqueidcolumnlikeakeyofsomesort in( select top 103000 someuniqueidcolumnlikeakeyofsomesort from tRealtyTrac order by creation)
否则您可能会删除超出预期的内容。
答案 1 :(得分:4)
内部查询需要:
从...
中选择前103000 创建答案 2 :(得分:3)
就我而言,CTE是有序删除的更好解决方案
;WITH records_delete AS (
select top 103000 creation
from tRealtyTrac
order by creation)
DELETE records_delete
答案 3 :(得分:2)
这是一种非常简单的方法:
通过创建desc从tRealtyTrac订单中选择top 3001
取最后一个日期,然后删除tRealtyTrac,其中创建< 'thedateyoufound'
但安迪也有一个好主意。 ;)
答案 4 :(得分:1)
试试这个:
DELETE FROM tRealtyTrac WHERE creation IN (SELECT top 103000 * FROM tRealtyTrac ORDER by creation)
你忘记了tRealtyTrac中的字段(我用星号来选择所有字段,但你可以列出它们或只列出一个)。你也忘了FROM子句。