问个小白问题(delete top (10) * from tb order by)

geniuswjt 2011-10-12 03:03:23

--RT,我知道可以delete top (10) * from tb,但是这个top是根据什么排序的呢?
delete top (10) * from tb order by col desc
--加上order by果断报错了,这个2005新加的delete top用法到底神马情况呢
...全文
547 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
hovy_yang 2011-10-13
  • 打赏
  • 举报
回复
delete后边不能跟order by
geniuswjt 2011-10-13
  • 打赏
  • 举报
回复
虽然都答非所问,结了吧
其实我是想问delete top ...后面怎么能加上order by
不过貌似微软就不让这样,悲催
hovy_yang 2011-10-12
  • 打赏
  • 举报
回复
都很油菜
qingdu_li 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wufeng4552 的回复:]
引用 5 楼 wufeng4552 的回复:
delete top (10) * from tb
只影响到正好线访问到的行数
delete top (10) * from tb order by col desc
一般要通过
cte
用row_number产生序号 再根据序号删除 达到order by 的目的

--更正下
一般
;with cte_del
as
(sele……
[/Quote]
顶。。。。。
qingdu_li 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 babydog01 的回复:]
引用 17 楼 geniuswjt 的回复:
这叫出师吧,出徒。。。油菜

引用 15 楼 babydog01 的回复:
我好像出徒了,跟高手写的一样,很是欣慰。

油菜? 初级职称?
[/Quote]
有才
geniuswjt 2011-10-12
  • 打赏
  • 举报
回复
有才![Quote=引用 18 楼 babydog01 的回复:]
引用 17 楼 geniuswjt 的回复:
这叫出师吧,出徒。。。油菜

引用 15 楼 babydog01 的回复:
我好像出徒了,跟高手写的一样,很是欣慰。

油菜? 初级职称?
[/Quote]
babydog01 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 geniuswjt 的回复:]
这叫出师吧,出徒。。。油菜

引用 15 楼 babydog01 的回复:
我好像出徒了,跟高手写的一样,很是欣慰。
[/Quote]
油菜? 初级职称?
geniuswjt 2011-10-12
  • 打赏
  • 举报
回复
这叫出师吧,出徒。。。油菜[Quote=引用 15 楼 babydog01 的回复:]
我好像出徒了,跟高手写的一样,很是欣慰。
[/Quote]
jiemo587 2011-10-12
  • 打赏
  • 举报
回复


delete top(10) from table output deleted.*

--看看吧

babydog01 2011-10-12
  • 打赏
  • 举报
回复
我好像出徒了,跟高手写的一样,很是欣慰。
babydog01 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jxjdzwang5555 的回复:]
能否:
delete from table where col in (select col from table top(10) order by col desc )
[/Quote]

可以,但应改一下:
delete table where col in (select top(10) col from table order by col desc )
--小F-- 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jxjdzwang5555 的回复:]
能否:
delete from table where col in (select col from table top(10) order by col desc )
[/Quote]
-- 这样当然可以
delete from tb where col in (select top(10) col from tb order by col desc )
水族杰纶 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wufeng4552 的回复:]
delete top (10) * from tb
只影响到正好线访问到的行数
delete top (10) * from tb order by col desc
一般要通过
cte
用row_number产生序号 再根据序号删除 达到order by 的目的
[/Quote]
--更正下
一般
;with cte_del
as
(select top (n) from tb order by col)
delete cte_del
jxjdzwang5555 2011-10-12
  • 打赏
  • 举报
回复
能否:
delete from table where col in (select col from table top(10) order by col desc )
-晴天 2011-10-12
  • 打赏
  • 举报
回复
create table tb(id int)
insert into tb select 1 union all select 2 union all select 3 union all select 4 union all select 5
go
delete top (3) from tb
go
select * from tb
go
drop table tb
/*
id
-----------
4
5

(2 行受影响)

*/
--小F-- 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 geniuswjt 的回复:]
嗯,鸡冻了,想说的是delete top (10) from tb然后再想order by
要么这个top的顺序不是随机的么

引用 4 楼 fredrickhu 的回复:
不要加那个*
[/Quote]
存储的物理地址排序
geniuswjt 2011-10-12
  • 打赏
  • 举报
回复
嗯,鸡冻了,想说的是delete top (10) from tb然后再想order by
要么这个top的顺序不是随机的么[Quote=引用 4 楼 fredrickhu 的回复:]
不要加那个*
[/Quote]
叶子 2011-10-12
  • 打赏
  • 举报
回复

declare @T table (col int)
insert into @T
select 1 union all
select 2 union all
select 3 union all
select 4 union all
select 5 union all
select 6 union all
select 7 union all
select 8 union all
select 9 union all
select 10

delete top (5) from @T
select * from @t
/*
col
-----------
6
7
8
9
10
*/
-晴天 2011-10-12
  • 打赏
  • 举报
回复
TOP ( expression ) [ PERCENT ]
指定将要删除的任意行数或任意行的百分比。expression 可以为行数或行的百分比。与 INSERT、UPDATE 或 DELETE 一起使用的 TOP 表达式中被引用行将不按任何顺序排列。

在 INSERT、UPDATE 和 DELETE 语句中,需要使用括号分隔 TOP 中的 expression。
水族杰纶 2011-10-12
  • 打赏
  • 举报
回复
delete top (10) * from tb
只影响到正好线访问到的行数
delete top (10) * from tb order by col desc
一般要通过
cte
用row_number产生序号 再根据序号删除 达到order by 的目的
加载更多回复(4)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧