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