gpt4 book ai didi

sql-server - MSSQL 插入 n 次,其中 n 来自一个选择

转载 作者:行者123 更新时间:2023-12-04 00:41:31 24 4
gpt4 key购买 nike

我有一个表格,其中一列中包含一个数字,该数字定义了一处特性有多少个车库。现在我需要向所有车库添加额外信息(大小、 parking 位数量、租金等),因此我必须通过插入与车库数量一样多的记录,在不同的表中为每个车库创建记录。

我想完成的事情:

SELECT ID, GarageCount FROM Properties

-- run next statement GarageCount times

INSERT INTO Garages (PropertyID) VALUES (Property.ID)

我需要对 Properties 表中 GarageCount > 0 的所有属性运行此命令

Properties.ID 是 PK,Garages.PropertyID 是 FK。

最佳答案

您不需要它来以“循环”方式运行。您可以只使用一个公共(public)表表达式来生成行,每个属性的行数与该属性中的车库数一样多:

with GarageRows as (
select id
, garagecount
, 0 [counter]
from Properties
union all
select p.id
, 1
, gr.counter + 1
from GarageRows gr
inner join Properties p on gr.id = p.id
where gr.counter + 1 < p.garagecount)
insert into Garages(PropertyID)
select gr.ID
from GarageRows gr
where gr.garagecount > 0

如果您只想测试上述 CTE 的结果,您可以运行以下查询,它会为两个属性生成行,一个有 2 个车库,一个有 4 个车库。

declare @properties table (id int, garagecount int)
insert @properties values (1, 2), (2, 4)

;with GarageRows as (
select id
, garagecount
, 0 [counter]
from @Properties
union all
select p.id
, 1
, gr.counter + 1
from GarageRows gr
inner join @Properties p on gr.id = p.id
where gr.counter + 1 < p.garagecount)
select gr.ID
from GarageRows gr
where gr.garagecount > 0
order by gr.ID

关于sql-server - MSSQL 插入 n 次,其中 n 来自一个选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40800904/

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