SQL 查询生成增量字段

SQL query to generate increment field

我有一个查询要从数据库中获取 MAX UID 值并在特定事件后向其添加 1(一)。
此当前查询正确生成数字,直到数字 10,但在数字 10 之后,每次执行查询时都会重复数字 10。当 DB 中的 MAX UID 为 10 时,我期望生成 11。下面是我当前的查询..

DECLARE  @i int = (SELECT ISNULL(MAX(UID),0) + 1 FROM myTable
WHERE CONVERT (date, IDate) >= CONVERT (date, GETDATE())) 
UPDATE myTable
SET UID  = @i 
WHERE CONVERT (date, IDate) >= CONVERT (date, GETDATE()) AND Id=1451

varchar 列的排序方式如下:

1
11
12
..
9

这意味着您每次都选择 9。

如果将列类型改为int会更好

我希望您的 ID 是主键,因此是唯一的。

DECLARE  @i int;

SET @i = ISNULL( ( SELECT MAX(CONVERT(int, UID))
                   FROM myTable
                   WHERE IDate >= CONVERT (date, GETDATE())
                 ) , 0) + 1;

UPDATE myTable
SET UID  = @i 
WHERE Id=1451;