【问题标题】:How to insert into a table using loop based on another select statement如何使用基于另一个选择语句的循环插入表
【发布时间】:2017-10-26 21:43:46
【问题描述】:

我有一个返回一些 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 新手。谢谢

【问题讨论】:

  • 您想在 SQL 中或从应用程序中执行此操作?您打算如何获取 REQ_TASK 表的其他列的值?对于所有 groupid,它们是静态的吗?
  • 在我的存储过程中。
  • @Chetan Ranpariya 我正在根据存储过程的输入参数获取其他列值。
  • REQ_TASK VALUES(,,_,IDs) 中的其他值(,,) 是一些常量还是从不同的表中提取的跨度>
  • @Kapil 是的,有些值是常量,有些来自 SP 的输入参数。

标签: sql sql-server


【解决方案1】:

您可以通过 insert into 语句 as 直接使用您的查询插入另一个表

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

【讨论】:

    【解决方案2】:

    你可以使用:

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

    【讨论】:

      【解决方案3】:

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

      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
      

      【讨论】:

      • 这条insert语句会在REQ_TASK表中创建5行吗?
      • 是的,如果 SELECT GROUP_ID FROM GROUP_REQUEST_MAPPING WHERE REQUEST_TYPE_ID = 1 返回 5 行则
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      相关资源
      最近更新 更多