gpt4 book ai didi

sql-server - T-SQL,在子查询中使用 MAX()+1 插入不会增加,替代方案吗?

转载 作者:行者123 更新时间:2023-12-02 07:35:05 25 4
gpt4 key购买 nike

我有一个查询,需要将行“批量”插入到具有不带标识的主键的表中。

--TableA
--PK int (Primary key, no-identity)
--CustNo int
INSERT INTO TableA (PK,CustNo)
SELECT (SELECT MAX(PK)+1 AS PK FROM TableA), CustNo
FROM Customers

(简化示例 - 请不要评论可能的并发问题:-))

问题是它不会增加“每个”处理行的 PK,并且我遇到了主键冲突。

我知道如何使用游标/while循环来做到这一点,但我想避免这种情况,并以基于集合的方式解决它,如果可能的话?

(运行 SQL Server 2008 Standard)

最佳答案

Declare @i int;

Select @i = max(pk) + 1 from tablea;

INSERT INTO TableA (PK, custno)
Select row_number() over(order by custno) + @i , CustNo
FROM Customers

关于sql-server - T-SQL,在子查询中使用 MAX()+1 插入不会增加,替代方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984732/

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