用于生成增量字段

时间:2015-09-28 16:02:36

标签: sql sql-server-2014

我有一个查询从数据库中获取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

1 个答案:

答案 0 :(得分:1)

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;