Azure SQL数据库:为每行新增指定列值不同的行
解决Azure SQL Database批量新增行的问题
别担心,这个需求用INSERT INTO ... SELECT语句就能轻松搞定,正好适配Azure SQL Database的环境,能帮你快速把现有4行扩展到8行。
核心解决方案
假设你的表名为TargetTable,包含的列有Tag、ADUser以及其他需要保留原值的列(比如ColumnA、ColumnB等),你可以执行以下SQL语句:
INSERT INTO TargetTable (Tag, ColumnA, ColumnB, ADUser) SELECT Tag, ColumnA, ColumnB, 'manju@apac.corpdir.net' FROM TargetTable;
语句逻辑说明
INSERT INTO指定要插入数据的表和列列表(注意:除了ADUser,其他列要和原表保持一致,确保所有需要保留原值的列都被包含)SELECT部分从原表读取每一行的数据,将ADUser的值替换为你指定的'manju@apac.corpdir.net',其余列直接复用原行的值- 执行后,原表的每一行都会被复制一份,仅
ADUser列值不同,正好实现4行变8行的需求
关键注意事项
- 主键处理:如果你的表有自增主键(
IDENTITY列),不需要在INSERT的列列表中包含它,Azure SQL Database会自动为新行生成唯一的主键值。 - 唯一约束检查:如果表中存在
ADUser与其他列组合的唯一约束(比如Tag + ADUser是唯一键),由于新行的ADUser和原行不同,不会触发约束冲突,可以放心执行。 - 列名替换:请将示例中的
TargetTable、ColumnA、ColumnB替换为你实际的表名和列名,确保所有非ADUser的列都被正确包含在语句中。
验证结果
执行完语句后,你可以用以下命令确认行数是否符合预期:
SELECT COUNT(*) AS TotalRows FROM TargetTable;
返回的TotalRows应该为8。
内容的提问来源于stack exchange,提问作者Manjunath Rao
相关产品推荐
相关产品推荐

