SQL表记录插入中间问题

时间:2018-08-16 05:17:12

标签: sql sql-server

我正在使用独立应用程序从SQL Server数据库中获取数据并将数据发送到API,以下是我的逻辑:

  1. 我正在同步单个表中的数据。
  2. 我会在文本文件中保持对数据同步的计数。
  3. 下次我想同步数据时,然后从文本文件中选择计数并使用BETWEEN子句查询记录。所以我每次都会得到新的记录。

我的代码:

SELECT * 
FROM   
    (SELECT 
         *, 
         ROW_NUMBER() OVER (ORDER BY logdate) AS RowNum 
     FROM   
         tabletobesynced 
     WHERE  
         logdate IS NOT NULL) AS LogTable 
WHERE  
    LogTable.rownum BETWEEN 5000 
                        AND (SELECT Count(*) 
                             FROM tabletobesynced) 
    AND logdate IS NOT NULL 

在SQL Server开始在中间而不是在末尾插入记录之前,一切都运转良好,并且很好。

例如:如果表有1到10条记录,那么当插入第11条记录时,它应该在第10条记录之后,但是不知何故该记录插入到中间某处。这些数据是从生物识别设备等第三方服务插入的。

您能指导我采取任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

这个评论太长了。

您没有指定数据如何进入表。如果要保留插入顺序,则可以使用标识列:

create table tabletobesynced (
    tabletobesyncedId int identity primary key,
    . . .
);

然后,当您使用order by查询数据时,可以使用此ID:

order by tabletobesyncedId