2017-05-26 31 views
2

我有一個select查詢返回一些ID。如何使用基於另一個select語句的循環插入表

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。感謝

+0

你想這樣做在SQL或從應用程序?你打算如何獲得REQ_TASK表的其他列的值?它們對所有的groupids都是靜態的嗎? –

+0

在我的存儲過程中。 –

+0

@Chetan Ranpariya我正在根據存儲過程的輸入參數獲取其他列值。 –

回答

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') 

--create另一個表#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 
+0

這個插入語句是否會在REQ_TASK表中創建5行? –

+0

是的,如果SELECT GROUP_ID FROM GROUP_REQUEST_MAPPING WHERE REQUEST_TYPE_ID = 1返回5行,那麼 – Kapil

0

您可以使用:

INSERT INTO REQ_TASK (col1, ...) 
SELECT GROUP_ID FROM GROUP_REQUEST_MAPPING 
WHERE REQUEST_TYPE_ID = 1; 
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

相關問題