如何使用join在T-Sql中进行FOR EACH循环?

时间:2015-02-26 11:47:37

标签: sql-server join

我有一个基本设置的表PRODUCT,因此有一个PRODUCTIDPRODUCTNAME ......看起来有点像这样

PRODUCTID  PRODUCTNAME
100        PNAME1   
101        PNAME2         
102        PNAME3   

现在我必须为PRODUCTMAPPING中的每一行向新表PRODUCT插入一条记录。

所以我的新表PRODUCTMAPPING看起来应该是这样的

PRODUCTMAPPINGID  PRODUCTID
1                 100
1                 101
1                 102
2                 100
2                 101
2                 102
3                 100

依旧......

我尝试while,但我需要使用Join

我们可以使用连接来实现这个吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

单向;

select
    row_number() over(partition by a.PRODUCTID order by a.PRODUCTID) PRODUCTMAPPINGID,
    a.PRODUCTID
from PRODUCT a, PRODUCT b

答案 1 :(得分:0)

  • 使用LOOP

以下示例指定查询中的JOIN操作由LOOP连接执行。

Select sp.Name,spqh.quota 
FROM Sales.SalesPersonQuotaHistory AS spqh
    INNER LOOP JOIN Sales.SalesPerson AS sp
    ON spqh.SalesPersonID = sp.SalesPersonID
WHERE sp.SalesYTD > 2500000.00;
GO

请参阅此MSDN链接

答案 2 :(得分:0)

INSERT
INTO    dbo.PRODUCTMAPPING
        (
        PRODUCTMAPPINGID
        ,PRODUCTID
        )

SELECT  pmv.PRODUCTMAPPINGID
        ,p.PRODUCTID
FROM    dbo.Product p
CROSS JOIN
        (
        SELECT  pm.ProductMappingID
        FROM    dbo.ProductMappingValues pmv -- WHERE DO THESE COME FROM?
        ) pmv