sqlite - SQLite 有游标吗?

标签 sqlite cursor

我想知道我是否可以在 SQLite 中运行以下过程:

set nocount on

select T.ID, max(T.SerialNo) as SerialNo
into #Tmp_Ticket_ID
from Ticket as T, Ticket as inserted
where t.ID = inserted.ID
group by T.id having count(*) > 1

declare zeiger cursor for
    select SerialNo
    from #Tmp_Ticket_ID

declare @SerialNo int

OPEN Zeiger  
FETCH NEXT FROM zeiger INTO @SerialNo 
WHILE (@@fetch_status <> -1)  
BEGIN  
    IF (@@fetch_status <> -2)  
    BEGIN  
        update T
            set ID = (select max(id) + 1 from Ticket)
        from ticket AS T, #Tmp_Ticket_ID as I
        where t.serialNo = i.serialno
        and I.Serialno = @SerialNo
    END
    FETCH NEXT FROM zeiger INTO @SerialNo
END  
CLOSE Zeiger  
DEALLOCATE Zeiger  
DROP TABLE #Tmp_Ticket_ID

这是一个来自 ms-sql2000 的小过程,它清除给定表 Ticket 中的 Ticket_id 的两倍:

create table Ticket (serialNo int identity(1,1) not null
    , ID as int not null
    , Ticket_issue as varchar(50)
    , some_more_field varchar(500))

由于来自不同数据库的简单合并,ticket_id 变得不唯一。为了通过重新编号来解决这个问题,我开发了这个程序,但现在我们在 SQLite-db 上遇到了类似的问题。

最佳答案

delete from Ticket
where exists
 (select rowid from Ticket t2
   where t2.ID = Ticket.ID and t2.rowid < Ticket.rowid)

rowid 是始终存在的 SQLite btree 索引列。

感谢 2009 年 8 月 17 日 SQLite 邮件列表中的 Martin Engelschalk。

关于sqlite - SQLite 有游标吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1876988/

相关文章:

sqlite - 在Windows Store应用中的sqlite中存储和显示图像?

sql-server - t-sql 游标 : does "fetch first from" regenerate the contents of the cursor?

android - 由 : android. 数据库引起。CursorIndexOutOfBoundsException : Index -1 requested,,大小为 1

javascript - 在 div 上使用 onmousemove 时光标出现问题

sql - SQL语法错误,语法不正确?

variables - Golang sqlite3 数据库输出到变量

android - 将 .csv 文件导入 Android 中的 Sqlite

java - SQLite 与 netbeans 不工作

python - 在 python 中,当使用 sqlite3 时,数据库物理存储在哪里?

android - SQLIte 查询返回空游标