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

Sou*_*han 10 sql-server json

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

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

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

INSERT INTO @products  
    EXEC [saveproducts] @product;
Run Code Online (Sandbox Code Playgroud)

从上面的查询中,我将获得产品列表作为表格。现在我需要将 json 中的详细信息与相应的产品连接起来

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

如何productId通过比较productNamein@detailJSON和 from 表来获得@products

Sou*_*han 8

只需要一个简单的内连接

 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 
Run Code Online (Sandbox Code Playgroud)