如何使用OPENJSON将json列表与SQL Server中的表连接?

时间:2017-01-02 09:44:03

标签: sql-server json

我有json数据,其中包含productDetails列表。我需要将每个细节与productId结合起来。

我正在使用存储过程。这是我的代码:

DECLARE @products AS TABLE(productName NVARCHAR(255), 
                           productId INT NOT NULL);

INSERT INTO @products  
    EXEC [saveproducts] @product;

从上面的查询中,我将产品列表作为表格。现在我需要在json中加入相应产品的细节

INSERT INTO @detail 
     SELECT
         [detaiId], [productId]
     FROM 
         OPENJSON(@detailJSON) 
     WITH(detailId UNIQUEIDENTIFIER 'strict $.detaiId',
       productId INT ??????);

如何通过比较productId和表productName中的@detailJSON来获取@products

1 个答案:

答案 0 :(得分:2)

只需要一个简单的内连接

 INSERT INTO @detail 
 SELECT
     J.[detaiId], P.[productId]
 FROM 
 @products P
 INNER JOIN
     OPENJSON(@detailJSON) 
 WITH(detailId UNIQUEIDENTIFIER 'strict $.detaiId',
      productName  NVARCHAR(255) 'strict $.productName'
   ) J 
 ON J.productName = P.productName