How to loop statements in SQL Server

不打扰是莪最后的温柔 提交于 2020-01-22 03:31:11

问题


I am new to SQL Server, I am trying to do something as follows.

Sample code :

SELECT ITEM_ID
FROM 'TABLE_NAME_1'
WHERE ITEM_STATUS = 'ACTIVE'

SET @ITEM_PRICE = (SELECT PRICE
                   FROM 'TABLE_NAME_2'
                   WHERE 'PRODUCT_ID' = 'ITEM_ID')

INSERT INTO 'TABLE_NAME_3' (ITEM_ID, PRICE)
VALUES (@ITEM_ID, @ITEM_PRICE)
  1. The first statement will return multiple rows of ITEM_ID
  2. By using the ITEM_ID I need to select the ITEM_PRICE from another table using the second statement
  3. By using the third statement, I need to insert the data into the third table

Here the first statement returns only one ITEM_ID, then everything is easy to do. I f it returns multiple rows how can I do all these processes for all the ITEM_ID which has returned by the first statement?

Actually, If the first statement returns 5 rows I need to loop 5 times.

Is it possible in SQL Server, if yes, please help me to do this


回答1:


Question would be why not use a straight SQL

INSERT 
  INTO 'TABLE_NAME_3' 
       (ITEM_ID
        ,PRICE
       )
 SELECT ITEM_ID,ITEM_PRICE
   FROM 'TABLE_NAME_1' A
   JOIN 'TABLE_NAME_2' B
     ON A.ITEM_ID=B.PRODUCT_ID
  WHERE A.ITEM_STATUS = 'ACTIVE'               



回答2:


based on your question i have created sample code you can use only one query to insert multiple data if you want to insert common data between table 1 and table 2 then use inner join or left join will be fine.

Code

INSERT INTO 'TABLE_NAME_3' (ITEM_ID,PRICE)
SELECT T1.ITEM_ID , T2.PRICE
FROM 'TABLE_NAME_1' AS T1
INNER JOIN 'TABLE_NAME_2' AS T2 ON T2.PRODUCT_ID = T1.ITEM_ID
WHERE T1.ITEM_STATUS = 'ACTIVE' 


来源:https://stackoverflow.com/questions/53773774/how-to-loop-statements-in-sql-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!