首页 > 解决方案 > 如何从一个表中为另一个表的每一行选择行并将它们解析为 JSON

问题描述

我有两个表 DbContours 和 SimpleLines。DbContours 中的一行通过 SimpleLines 表中的字段 ContourId 在 SimpleLines 中有多个对应的行。我想获取 SimpleLines 中与 DbContours 中的行相关的所有行,并将其解析为 JSON 字符串,然后插入到其他一些表字段中。我可以针对特定的 ContourId(在这种情况下为 CDCBC42E-2E86-426E-A9BA-00B8B902A153)执行此操作。如何对 DbContours 中的所有行执行此操作?

DECLARE @Lines NVARCHAR(MAX) = (SELECT [X1]
          ,[Y1]
          ,[X2]
          ,[Y2]
FROM [DDROPDATABASEPROM-2020-10-11-13-13].[dbo].[SimpleLines] WHERE ContourId = 'CDCBC42E-2E86-426E-A9BA-00B8B902A153' FOR JSON AUTO);zDECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"CalculationProvider":"CalculateWithCSharp"}';
SELECT JSON_MODIFY(@OriginalJSON, '$.SimpleLines', JSON_QUERY(@Lines)) AS 'Updated JSON';

标签: sqlsql-server

解决方案


首先分离出所需的任务。您需要做的第一件事是弄清楚您的查询。由于您说这些表是相关的,因此您应该使用 aJOIN来获取符合您的条件的所有行。

让它在您的查询中工作,然后您可以通过所需的 JSON 函数运行它。

最后,如果您想将它们插入到新表中,您可以使用 CTAS 的形式 -Create Table As Select或使用 CTE Common Table Expression


推荐阅读