如何使用基于另一个select语句的循环插入表中

时间:2017-05-26 05:14:27

标签: sql sql-server

我有一个select查询,它会返回一些ID。

SELECT GROUP_ID FROM GROUP_REQUEST_MAPPING WHERE REQUEST_TYPE_ID = 1

结果我得到了这个。

GROUP_ID
6
7
8
9
14

我必须遍历ID,然后在另一个表中插入那么多行。

INSERT INTO REQ_TASK VALUES(_,_,_,IDs)

我该怎么做。我是sql的新手。感谢

3 个答案:

答案 0 :(得分:3)

使用下面的选择直接使用常量或参数:

INSERT INTO REQ_TASK VALUES(_,_,_,IDs)
SELECT @param1,@param2,'xyz', GROUP_ID FROM GROUP_REQUEST_MAPPING WHERE REQUEST_TYPE_ID = 1

这是一个小例子

 Create table #food
( item varchar(50))

insert into #food values 
('icecream'),
('sandwich'),
('Pasta'),
('FrenchFries'),
('Toast')

- 创建另一个表#food_test

Create table #food_test
( item varchar(50),quantity int)

Insert into #food_test(item,quantity)
select item,10 from #food

现在检查#food_test

中的值
select * from #food_test

答案 1 :(得分:0)

您可以使用:

INSERT INTO REQ_TASK (col1, ...) 
SELECT GROUP_ID FROM GROUP_REQUEST_MAPPING 
WHERE REQUEST_TYPE_ID = 1;

答案 2 :(得分:0)

您可以直接使用您的查询通过插入语句作为

插入另一个表中
USE MASTER

 Create table GROUP_REQUEST_MAPPING
( GROUP_ID int, REQUEST_TYPE_ID int)

insert into GROUP_REQUEST_MAPPING values 
(6,1),
(7,1),
(8,1),
(9,1),
(10,1)
Create table REQ_TASK (AMOUNT int, IDs int)
SELECT * FROM GROUP_REQUEST_MAPPING
SELECT * FROM REQ_TASK

INSERT INTO REQ_TASK (AMOUNT,IDs)
SELECT 10, GROUP_ID FROM GROUP_REQUEST_MAPPING WHERE REQUEST_TYPE_ID = 1

SELECT * FROM REQ_TASK

DROP TABLE REQ_TASK
DROP TABLE GROUP_REQUEST_MAPPING

https://www.w3schools.com/sql/sql_insert_into_select.asp