sql server 2005下奇怪的Delete Top 语句(downmoon)

本文介绍如何在SQL Server 2005中使用带有TOP参数的DELETE语句来删除表中特定百分比的数据,并提供了一个删除测试数据库中10%行数的具体例子。

sql server 2005中Delete语句可以添加一个top参数

以下示例删除 Testdb 表中所有行的 10%。

-- 生成测试数据库
Create database Testdb
go
USE [ Testdb ]
GO
-- 生成测试表
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [ dbo ] . [ TestDelete ] (
[ PKID ] [ int ] IDENTITY ( 1 , 1 ) NOT NULL ,
[ TestID ] [ int ] NULL ,
[ testString ] [ nvarchar ] ( 50 ) NULL ,
CONSTRAINT [ PK_TestDelere ] PRIMARY KEY CLUSTERED
(
[ PKID ] ASC
)
WITH (PAD_INDEX = OFF ,STATISTICS_NORECOMPUTE = OFF ,IGNORE_DUP_KEY = OFF ,ALLOW_ROW_LOCKS = ON ,ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ]
)
ON [ PRIMARY ]
go
-- 插入测试数据
declare @tmpID int
set @tmpID = 1
WHILE (( SELECT max (PKID) FROM TestDelete) < 2000 )
BEGIN
set @tmpID = @tmpID + 2
insert into [ TestDelete ] ( [ TestID ] , [ testString ] ) values ( @tmpID , cast ( @tmpID as nvarchar ( 10 )))
CONTINUE
END

select count ( * ) from TestDelete
go
-- 删除测试数据
--以下示例删除 Testdb 表中所有行的 10%。
DELETE TOP ( 10 ) PERCENT FROM TestDelete
GO
-- 下面这句执行错误
--
--DELETETOP(10)PERCENTFROMTestDeleteorderbyPKIDdesc
--
--GO
select count ( * ) from TestDelete
go

-- 删除测试数据库
--
--dropdatabaseTestdb
--
--go



微软的开发人员真的很奇怪?不得而知。一个奇怪的语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值