我是SQL Server的新手,我正在尝试执行以下操作。
示例代码:
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)
ITEM_ID
的多行ITEM_ID
,我需要使用第二条语句从另一个表中选择ITEM_PRICE
在这里,第一条语句仅返回一个ITEM_ID
,因此一切都很容易做到。如果返回多行,如何对第一条语句返回的所有ITEM_ID
进行所有这些处理?
实际上,如果第一条语句返回5行,我需要循环5次。
在SQL Server中是否可以,如果可以,请帮助我做到这一点
答案 0 :(得分:1)
问题就是为什么不使用简单的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'
答案 1 :(得分:0)
根据您的问题,我创建了示例代码,如果要在表1和表2之间插入公共数据,则只能使用一个查询来插入多个数据,然后使用内部联接或左联接就可以了。
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'