求一句delete的sql语句

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:11:35
有一个表

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

删除你的表中前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 跟其他的数据库

delete from 表 where 主键 in (select top 100 主键 from 表)

主键: 能够唯一表示数据表中的每个记录的【字段】或者【字段】的组合就称为主码(主键)。

Delete From [TABLE] Where Exists (Select Top 100 * From [TABLE])

我估计这样可以~

sql的话,备份一下就可以了!
oracle 的话各位提供的方法貌似搞不定!

delete from 表名 where id=1