用SELECT查出10个记录,如何删除第六个记录?如果第6,7个记录一样呢?

ly2099 2000-03-11 01:17:00
...全文
395 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huitor 2000-05-31
  • 打赏
  • 举报
回复
代码如下:
Dim rs As New ADODB.Recordset
rs.Open SqlString, ConnectionString, adOpenKeyset, adLockOptimistic
rs.AbsolutePosition = 6
rs.Delete
要求:
表必须建立主键或者唯一索引
要使用adOpenKeyset和adLockOptimistic,也可以使用其它选项,请参阅adodb文档。
Tommy Chang 2000-05-31
  • 打赏
  • 举报
回复
ly2099:用SELECT查出10个记录,如何删除第六个记录?如果第6,7个记录一样呢?

提问题的朋友并没有说顺序是不是固定的,如果可以有主键、唯一键的话,一定可以保证用huitor朋友的方法来解决。
ly2099可以将问题再描述具体点吗?
Tommy Chang 2000-05-31
  • 打赏
  • 举报
回复
小弟才疏学浅,实在看不出来ly2099问的是什么数据库的语法,各位是用什么数据库举例的。sql 92是不包括rowid, rowcount,top。。。,处于关系数据库的角度而言,除非指定按某种条件排序,否则没有固定的顺序(各大厂家都没承诺过,保证在不指定排序方式的查询,当返回多行记录会按照某种固定顺序来排列。导过数据、做过数据碎片清理。。。这些操作之后,有谁会保证这些呐?),而使用游标确实是一种解决办法,而且比较快速,但是反问一句,为什么会选中第6条记录来删除呐?除非你就是看第6条不顺眼 :) 这样也许就会怀念xbase的时代了。

问题也许可以试着换种描述方式,如果你能给出逻辑上的判断条件,那么用sql一定可以做到。(db2中的sql连递归都可以写,sql中也可以使用store procedure来处理数据。。。)

请高手赐教,指点在具体数据库下的实现方法。
Axiong 2000-04-20
  • 打赏
  • 举报
回复
set rowcount 6
delete tablename where "区别于前面记录的条件"
set rowcount 0

这样就可删除一条相同的记录
laser 2000-03-30
  • 打赏
  • 举报
回复
在游标中用
DELETE tablename WHERE CURRENT OF cursorname
tanghuan 2000-03-30
  • 打赏
  • 举报
回复
上面应是create table #temptable (RowNumber int identity,数据列)
tanghuan 2000-03-30
  • 打赏
  • 举报
回复
create table #temptable (RowNumber int,数据列)
insert into #temptable (数据列)
select 数据列
from .....
delete #temptable where RowNumber 是你不需要的

select 数据列 from #temptable
How 2000-03-25
  • 打赏
  • 举报
回复
假设有一员工表Employee(EmployeeID,EmployeeName,...),
要删除第6条的记录,可用如下语句:
delete from employee
where (EmployeeID not in ( select top 5 EmployeeID from employee))
and (EmployeeID in (select top 6 EmployeeID from employee))
DataBind 2000-03-13
  • 打赏
  • 举报
回复
不知你为什么能准许相同纪录插入。其他人已经说了基本的实现方法(cursor)。
如果你是要取出不同的纪录,可以试一下:
select distinct [fieldlist] from [tablename] [where] [conditions]
dthl 2000-03-11
  • 打赏
  • 举报
回复
DECLARE cs0 CURSOR FOR SELECT ROWID,* FROM table1 选出ROWID,这是唯一标志记录的,
DELETE FROM table1 WHERE ROWID=xxxx 然后删除
GoldenLion 2000-03-11
  • 打赏
  • 举报
回复
可以用Cursor定位并删除。
929 2000-03-11
  • 打赏
  • 举报
回复
在关系数据库中表中的每一条记录都应有一个唯一的识别标志,这样才能在表中准确的定位。理论上,表中不应出现一模一样的记录。如果出现,在向表中发出更新,删除等语句时,符合要求的记录都将被操作。也就是说你问题中的6。7两条记录都将被删除。解决的方法可以首先以分组或其它方法,把这些重复的记录保留其中一条在一个临时表或内存中。在发出删除命令后,再把这些保留的记录以INSERT恢复回去。

34,575

社区成员

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

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