SQl从表中删除前100名
我正在尝试删除表中的所有项,但最近的3000项除外。该表有105000条记录 我正在尝试此操作,但由于语法错误而生成错误SQl从表中删除前100名,sql,Sql,我正在尝试删除表中的所有项,但最近的3000项除外。该表有105000条记录 我正在尝试此操作,但由于语法错误而生成错误 delete tRealtyTrac where creation in( select top 103000 from tRealtyTrac order by creation) 内部查询需要是: 从…中选择top 103000 creation,这是一种非常简单的方法: 按创建说明从tRealtyTrac订单中选择top 3001 获取最后一个日期,然后删除创建的tR
delete tRealtyTrac where creation in( select top 103000 from tRealtyTrac order by creation)
内部查询需要是:
从…中选择top 103000 creation,这是一种非常简单的方法: 按创建说明从tRealtyTrac订单中选择top 3001 获取最后一个日期,然后删除创建的tRealtyTrac<'thedateyoufound' 但是安迪也有一个好主意。
; 删除语法将与现有语法略有不同。例如:
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)
否则,您可能会删除超出预期的内容。请尝试以下操作:
DELETE FROM tRealtyTrac WHERE creation IN (SELECT top 103000 * FROM tRealtyTrac ORDER by creation)
您忘记了tRealtyTrac中的字段,我用星号选择了所有字段,但您可以列出它们,也可以只列出一个。您还忘记了FROM子句。至于我,CTE是有序删除的更好解决方案
;WITH records_delete AS (
select top 103000 creation
from tRealtyTrac
order by creation)
DELETE records_delete
在103001和103000成员中的创建可以相同。我会选择top PK ID并在其中进行检查。谢谢大家-我使用了这个命令结合您的答案删除tRealtyTrac,其中ID在按Creation从tRealtyTrac order中选择top 103000 ID中这是正确的。非常感谢。将Brian的答案标记为正确,因为提供了完整的语法和解释。您的语句失败,因为不能在tRealtyTrac的所有属性中创建。虽然你提到必须改变星号,但这句话给了读者错误的认识。难道没有人注意到105000减去103000等于2000吗?他说我正试图删除表中除最近3000项以外的所有项目。他正要删除比他想要的多1000条记录。