none
能不能使用游标删除当前行的上一行记录呢? RRS feed

  • 问题

  • 我的目的是对一张表的记录进行有条件的清理,清理的条件是根据当前行的记录来决定是否删除当前行和上一行记录, 我现在使用的是游标,可以用游标delete from table_name where current of cursor_name删除当前行记录, 但是怎么删掉上一行记录呢?

    2010年8月18日 5:39

答案

全部回复

  • 能把你的表结构和删除条件详细说一下嘛?

    我觉得用sql语句里的join也可以实现,毕竟游标性能不高.


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年8月18日 13:52
    版主
  • 我有一张表,表结构是这样的
    CREATE TABLE [dbo].[Events](
     [StnID] [smallint] NOT NULL,
     [EventType] [tinyint] NOT NULL,
     [EventTime] [datetime] NOT NULL,
     [CardID] [int] NULL,
     [CardStatus] [tinyint] NULL,
     [AlarmFlag] [tinyint] NULL
    ) ON [PRIMARY]

    清理条件是:删掉同一个StnID下 , 上一行EventType = 3 当前行EventType = 4 并且两行之间EventTime之差在一定范围内,则删掉这两行记录。

    2010年8月19日 1:20
  • 把 上一行的主键值存储到变量, 要删除上一行的时候, 通过主键值做条件就好了.

    • 已标记为答案 zhanggeni 2010年8月19日 5:11
    2010年8月19日 4:42
  • 谢谢! 我目前就是这样做的,但感觉应该有更高效的方法,因为我要删掉的记录很多,这样比较慢。

    2010年8月19日 5:13