sql - 如何从一个表中为另一个表的每一行选择行并将它们解析为 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';
解决方案
首先分离出所需的任务。您需要做的第一件事是弄清楚您的查询。由于您说这些表是相关的,因此您应该使用 aJOIN
来获取符合您的条件的所有行。
让它在您的查询中工作,然后您可以通过所需的 JSON 函数运行它。
最后,如果您想将它们插入到新表中,您可以使用 CTAS 的形式 -Create Table As Select
或使用 CTE Common Table Expression
。
推荐阅读
- math - 如何减小球体中心点和点 P 之间的半径并找到点 P 的新坐标?
- javascript - Angular找到一个类型的所有服务
- sql - 内部连接中的案例条件
- android - 如何从 Flutter 访问设备应用程序
- python - Python Pandas 数据框 - 组合/合并具有空值的行
- c - Ghidra 使用像“._0_4_”这样的奇怪字段名称来表示 C 反编译中的非默认访问大小
- mysql - 仅选择作者的最后一篇文章
- python - 将字符串日期转换为可用的熊猫格式
- python - 在不使用主分区键的情况下查询 DynamoDB 中的所有数据
- python - 在 Python 中组织类模块代码的更好方法