Har*_*a W 5 sql t-sql sql-server json
有没有办法使用 SQL 中的 JSON 字段更新表。
{
"RelationshipType" : [
{
"ID" : 1,
"FromID" : 70,
"ToID" : 12
},
{
"ID" : 3,
"FromID" : 80,
"ToID" : 1
}
]
}
Run Code Online (Sandbox Code Playgroud)
表结构
ID | FromID | ToID |
1 | 10 | 12 |
2 | 42 | 17 |
3 | 100 | 1 |
Run Code Online (Sandbox Code Playgroud)
如果我在 SQL 服务器中使用上面提到的 JSON 文件更新表,输出应该通过匹配FromID到ID.
ID | FromID | ToID |
1 | 70 | 12 |
2 | 42 | 17 |
3 | 80 | 1 |
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我目前正在使用以下查询。
DECLARE @Relationship AS TABLE(FromID INT,ToID INT,ID INT)
INSERT INTO @Relationship (FromID,ToID,ID)
SELECT FromID, ToID, ID
FROM OPENJSON(@RelationshipType)
WITH (FromID INT, ToID INT, ID INT)
Run Code Online (Sandbox Code Playgroud)
我正在迭代表@Relationship并更新数据。是否有一种正确的方法可以使用 JSON 操作而不迭代临时表。
首先,你需要指定的路径'$.RelationshipType'中OPENJSON(),使其正确地提取数据。
其次,可以OPENJSON()像任何表一样连接结果,也可以使用UPDATE,如下所示:
UPDATE U
SET FromID = J.FromID
FROM YourTable AS U
JOIN OPENJSON(@RelationshipType, '$.RelationshipType')
WITH (ID INT, FromID INT, ToID INT) J
ON J.ID = U.ID
Run Code Online (Sandbox Code Playgroud)
看看它在行动:https :
//dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=c37ef5a175c0f19e0f990dc6a219ce26
| 归档时间: |
|
| 查看次数: |
5181 次 |
| 最近记录: |