gpt4 book ai didi

sql - 带前缀的 MSSQL 自动递增 ID

转载 作者:行者123 更新时间:2023-12-01 06:06:44 25 4
gpt4 key购买 nike

我想实现一个带前缀的自动递增 ID,但如果它有不同的前缀,则重置该数字。

我想要的输出如下所示:

ID  PREFIX  PROJECTID
1 PID_ PID_1
2 PID_ PID_2
3 RID_ RID_1
4 RID_ RID_2

但是我用我的脚本得到的结果是这样的:
ID  PREFIX  PROJECTID
1 PID_ PID_1
2 PID_ PID_2
3 RID_ RID_3
4 RID_ RID_4

这是我创建表的脚本
CREATE TABLE PROJECTS
(ID INT IDENTITY(1,1) NOT NULL,
PREFIX NVARCHAR(10) NOT NULL,
PROJECTID AS ISNULL(PREFIX + CAST(ID AS NVARCHAR(10)), '') PERSISTED)

INSERT INTO PROJECTS(PREFIX) VALUES('PID_'),('PID_'),('RID_'),('RID_')

我正在使用 MS SQL 2012

最佳答案

你想要这样

CREATE TABLE #PROJECTS
(
ID INT IDENTITY(1, 1)
NOT NULL ,
PREFIX NVARCHAR(10) NOT NULL ,
PROJECTID NVARCHAR(11)
)


INSERT INTO #PROJECTS
( PREFIX )
VALUES ( 'PID_' ),
( 'PID_' ),
( 'RID_' ),
( 'RID_' )

假设您的表中有上述数据

现在,如果您想使用 DECLARE @PREFIX NVARCHAR(10) = 'RID_' 执行插入
INSERT  INTO #PROJECTS
( PREFIX ,
PROJECTID
)
SELECT @PREFIX ,
@PREFIX + CAST(( COUNT(TT.rn) + 1 ) AS NVARCHAR(1))
FROM ( SELECT ROW_NUMBER() OVER ( PARTITION BY P.PREFIX ORDER BY ( SELECT
NULL
) ) AS rn
FROM #PROJECTS AS P
WHERE P.PREFIX = @PREFIX
) AS tt

请参阅上面的查询可能对您有所帮助。

关于sql - 带前缀的 MSSQL 自动递增 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37919864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com