删除前几项的记录

QWER123qazqwe 2010-10-08 09:42:39
要删除一个表前几项的记录。
如:
要将表A中的3条最新记录a,b,c通过查询出来再添加到表B中,同时将表A中的原来3条a,b,c删除掉;
...全文
73 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chiwq520 2010-10-09
纯支持。。楼上都是高手。。
回复
liyingzi 2010-10-09
[Quote=引用 6 楼 qwer123qazqwe 的回复:]
回 tashiwoweiyi (小B样)

调试了下
SQL语句:delete A where s_address in (select top 3 s_address from A order by s_time desc)

结果不是把表的最新3条记录删除了 而是删除了表的所有记录了
[/Quote]
A表里不就只有3条记录吗
回复
liyingzi 2010-10-09
没有标识列怎么知道哪3条是最新的呢?有日期时间列吗?
回复
yuhuiwqvb 2010-10-09
[Quote=引用 8 楼 denghui_li 的回复:]
SQL code
with cte as
(
select top 3 *
from dbo.table_a
order by id desc;
)
drop table cte;//???
[/Quote]
删除cte这个表有用吗?
楼主要删除的是a表中传到B表的那几条记录呀
回复
闹铃 2010-10-08

with cte as
(
select top 3 *
from dbo.table_a
order by id desc;
)
insert into dbo.table_b
select * from cte;

with cte as
(
select top 3 *
from dbo.table_a
order by id desc;
)
drop table cte;
回复
QWER123qazqwe 2010-10-08
触发器? 怎么去弄?对触发器我还停留在表面了解,

请教sibiyellow (sibiyellow)
回复
QWER123qazqwe 2010-10-08
回 tashiwoweiyi (小B样)

调试了下
SQL语句:delete A where s_address in (select top 3 s_address from A order by s_time desc)

结果不是把表的最新3条记录删除了 而是删除了表的所有记录了
回复
天下如山 2010-10-08
触发器实现 一步到位。然后肯定要有个字段来标识如何去最新的3条吧。
回复
tashiwoweiyi 2010-10-08
没有一个时间字段来判断哪3条是最新记录吗?
如果 有代码如下:

insert into B select top 3 * from A order by 时间字段 desc
delete A where 时间字段 in (select top 3 时间字段 from A order by 时间字段 desc)
回复
QWER123qazqwe 2010-10-08
没有标识

已知条件就只有2个表名A,B,还有记录数 3

我想实现的目的是 删除表A最新的3条记录
回复
SQLCenter 2010-10-08
insert into B select 3条最新记录 from A where ?
delete A where ?
回复
billpu 2010-10-08
有标识吗,有就简单
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-08 09:42
社区公告
暂无公告