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