求一句delete的sql语句

有一个表ID是有重复的,我只要删除前面100行的数据,请问这么写没有主键,ID是可以重复的~deletefromtable_1whereidin(selecttop100... 有一个表

ID是有重复的,我只要删除前面100行的数据,请问这么写
没有主键,ID 是可以重复的 ~

delete from table_1 where id in (select top 100 id from table_1)

比如第一行的ID 是5, 101行的ID 也是5,这种写法会把101 行的也删除的啊 ~!!!1
这种写法应该有问题吧 ~!!!!1
展开
 我来答
mailking2001
2009-08-11 · TA获得超过817个赞
知道小有建树答主
回答量:1037
采纳率:100%
帮助的人:746万
展开全部
删除你的表中前100的数据,而且又没有主键,有重复的数据时非常麻烦的事情
但并不是没有解决办法,这个涉及到可能需要通过修改表来完成
我的办法是先自己建个临时表例如
select identity(int,1,1)as sid ,table_1.* into temptb from table_1
这时候你就建立了个temptb的临时表
select * from temptb
你回发现多了一列sid的自增长列,这时候你删除数据就可以根据自增长列来删除了!!!
delete from temptb where sid<='100'
这时候删除的数据就是前100的数据了,在怎么做你应该也明白了,就是把temptb取出来,这需要delete 掉你目前的table_1 。
delete table_1
insert table_1 (table_1 的数据列)
select (除了sid列你对应table_1 的数据列) from temptb

这样就构造出了没有主键的拥有重复数据的表 删除 前100条数据的例子

不知道你看懂了没有,一个表没有主键,又拥有重复数据,要删除特定的数据时非常麻烦的,所以建表一定要有主键。

oracle 数据库的话删除前100条记录是非常容易的,以上只针对sqlserver 跟其他的数据库
ch00111959
2009-08-11 · 超过23用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:56.6万
展开全部
delete from 表 where 主键 in (select top 100 主键 from 表)

主键: 能够唯一表示数据表中的每个记录的【字段】或者【字段】的组合就称为主码(主键)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
技术变现探索者
2009-08-11 · TA获得超过101个赞
知道答主
回答量:73
采纳率:0%
帮助的人:49.2万
展开全部
oracle数据库中 :
delete from table_1 where rownum < 100
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柴关贵深0m
2009-08-11 · TA获得超过1142个赞
知道小有建树答主
回答量:1270
采纳率:0%
帮助的人:0
展开全部
sql的话,备份一下就可以了!
oracle 的话各位提供的方法貌似搞不定!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
htsunday
2009-08-16 · TA获得超过1101个赞
知道小有建树答主
回答量:721
采纳率:0%
帮助的人:510万
展开全部
delete from table_1 where id in
(select id from table_1
group by id
order by id desc
having rownum<100)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式