Tsql 向SQL表插入多个值(类似循环)

Tsql 向SQL表插入多个值(类似循环),tsql,Tsql,我正在使用TSQL 我有两个表-资产到角色和资产到支付,都有两列。 我需要在两个表中插入资产的值。 对于资产到角色表,我需要插入5个值(312315316318319)。 对于这些值中的每一个,我需要在资产支付表(2241、2242、…、2245)中插入5个值。 为了说明我在这里的意思,我举了一个这样插入的例子: insert into asset_to_role values (asset_id, 312) insert into asset_to_payoff values (asset_i

我正在使用TSQL

我有两个表-资产到角色和资产到支付,都有两列。 我需要在两个表中插入资产的值。 对于资产到角色表,我需要插入5个值(312315316318319)。 对于这些值中的每一个,我需要在资产支付表(2241、2242、…、2245)中插入5个值。 为了说明我在这里的意思,我举了一个这样插入的例子:

insert into asset_to_role values (asset_id, 312)
insert into asset_to_payoff values (asset_id, 2241)
insert into asset_to_payoff values (asset_id, 2242)
insert into asset_to_payoff values (asset_id, 2243)
insert into asset_to_payoff values (asset_id, 2244)
insert into asset_to_payoff values (asset_id, 2245)
SQL中是否有一种方法可以重复执行该过程?

您可以编写一个显式的
,而
循环时,您还可以使用
资产id
值声明一个表变量
@input
。然后,只需使用2条
insert
语句即可创建所有记录

样本数据

create table asset_to_role
(
  asset_id int,
  prop1 int
);

create table asset_to_payoff
(
  asset_id int,
  prop2 int
);
解决方案

-- define input
declare @input table
(
  asset_id int
);

insert into @input (asset_id) values
(100000), (100001), (100002), (100003); -- list of "arbitrary numbers" goes here...

-- insert role
insert into asset_to_role (asset_id, prop1)
select i.asset_id, 312
from @input i;

-- insert payoff
insert into asset_to_payoff (asset_id, prop2)
select i.asset_id, v.prop2
from @input i
cross join (values (2241), (2242), (2243), (2244), (2245)) as v(prop2);
结果

asset_id prop1
-------- -----
100000   312
100001   312
100002   312
100003   312

asset_id prop2
-------- -----
100000   2241
100000   2242
100000   2243
100000   2244
100000   2245
100001   2241
100001   2242
100001   2243
100001   2244
100001   2245
100002   2241
100002   2242
100002   2243
100002   2244
100002   2245
100003   2241
100003   2242
100003   2243
100003   2244
100003   2245

查看实际操作。

我们有DML触发器可以帮助您,您可以使用插入后触发器,因此当您将数据插入主表时,触发器将触发并执行其余任务

CREATE TABLE asset_to_role (asset_id INT, VALUE INT)
CREATE TABLE asset_to_payoff (asset_id INT, VALUE INT)

GO
CREATE TRIGGER InsertTrigger ON asset_to_role
AFTER INSERT AS 
BEGIN 
insert into asset_to_payoff SELECT asset_ID,2241 FROM inserted
insert into asset_to_payoff SELECT asset_ID,2242 FROM inserted
insert into asset_to_payoff SELECT asset_ID,2243 FROM inserted
insert into asset_to_payoff SELECT asset_ID,2244 FROM inserted
insert into asset_to_payoff SELECT asset_ID,2245 FROM inserted
END

INSERT INTO dbo.asset_to_role VALUES (1,312)

SELECT * FROM dbo.asset_to_role
SELECT * FROM dbo.asset_to_payoff
结果是这样的


用您正在使用的数据库标记您的问题。资产id是如何生成的?自动增量?您使用的是哪种DBMS产品?“SQL”只是所有关系数据库使用的查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加@大力水手号给了我。假设它是一个任意数