SQl从表中删除前100名

时间:2009-04-30 21:53:43

标签: sql

我正在尝试删除表格中除最近的3,000项以外的所有项目。该表有105,000条记录。

我正在尝试这个,但是错误会产生错误的语法。

delete tRealtyTrac where creation in( select top 103000 from tRealtyTrac order by creation)

5 个答案:

答案 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)

这是一种非常简单的方法:

  1. 通过创建desc从tRealtyTrac订单中选择top 3001

  2. 取最后一个日期,然后删除tRealtyTrac,其中创建< 'thedateyoufound'

  3. 但安迪也有一个好主意。 ;)

答案 4 :(得分:1)

试试这个:

DELETE FROM tRealtyTrac WHERE creation IN (SELECT top 103000  * FROM tRealtyTrac ORDER by creation)

你忘记了tRealtyTrac中的字段(我用星号来选择所有字段,但你可以列出它们或只列出一个)。你也忘了FROM子句。