2017-05-26 7 views
2

いくつかのIDを返すselectクエリがあります。別の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

としてINSERT INTOステートメントを介して別のテーブルに挿入するためにクエリを使用することができますが、SQLでこれを行うにしたいですまたはアプリケーションからですか? REQ_TASKテーブルの他の列の値をどのように取得する予定ですか?彼らはすべてのgroupidのために静的ですか? –

+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別のテーブルを

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

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

#food_test #food_testの値を確認してください

select * from #food_test 
+0

この1つのINSERTステートメントは、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

関連する問題