使用动态创建的 JSON MySql 更新列值
Update column values with dynamically created JSON MySql
我有一个 Relationships
table 看起来像这样
ID | FromID | ToID | JsonPair
1 10 8 null
2 11 13 null
3 15 21 null
4 26 22 null
和 2 tables From
和 To
FromID | FromName ToID | ToName
1 'A' 1 'Z'
2 'B' 2 'Y'
... ...
10 'E' 8 'M'
11 'I' ...
... 13 'N'
15 'O' ...
... 21 'F'
26 'U' 22 'H'
我正在尝试用 {FromName: ToName}
形式的 Json 对象更新 Json 对列。所以结果 table 看起来像
ID | FromID | ToID | JsonPair
1 10 8 {'E':'M'}
2 11 13 {'I':'N'}
3 15 21 {'O':'F'}
4 26 22 {'U':'H'}
我是 SQL 的新手。我在想我应该先 SELECT
名称,然后使用结果放入 UPDATE
语句。
到目前为止,我已将此发送给 return FromName 和 ToName
SELECT F.FromName FROM Relationships AS R
JOIN From as F
ON R.FromID = F.FromID
和
SELECT T.ToName FROM Relationships AS R
JOIN To as T
ON R.FromID = T.FromID;
那我觉得应该用这个结果来做
UPDATE Relationships
SET JsonPair = (combine result above and format to json)
WHERE JsonPair IS NULL;
我卡在了合并和格式化步骤。请问我可以得到帮助吗?
我正在使用 MySql
您可以使用 update/join 语法以及 json_object()
。
考虑:
update relationships r
inner join t_from f on f.fromid = r.fromid
inner join t_to t on t.to_id = r.to_id
set r.jsonpair = json_object(f.fromname, t.toname)
注意:from
和 to
是 reserved words in MySQL,因此 table 名称的选择不当。我在查询中将它们重命名为 t_from
和 t_to
。
我有一个 Relationships
table 看起来像这样
ID | FromID | ToID | JsonPair
1 10 8 null
2 11 13 null
3 15 21 null
4 26 22 null
和 2 tables From
和 To
FromID | FromName ToID | ToName
1 'A' 1 'Z'
2 'B' 2 'Y'
... ...
10 'E' 8 'M'
11 'I' ...
... 13 'N'
15 'O' ...
... 21 'F'
26 'U' 22 'H'
我正在尝试用 {FromName: ToName}
形式的 Json 对象更新 Json 对列。所以结果 table 看起来像
ID | FromID | ToID | JsonPair
1 10 8 {'E':'M'}
2 11 13 {'I':'N'}
3 15 21 {'O':'F'}
4 26 22 {'U':'H'}
我是 SQL 的新手。我在想我应该先 SELECT
名称,然后使用结果放入 UPDATE
语句。
到目前为止,我已将此发送给 return FromName 和 ToName
SELECT F.FromName FROM Relationships AS R
JOIN From as F
ON R.FromID = F.FromID
和
SELECT T.ToName FROM Relationships AS R
JOIN To as T
ON R.FromID = T.FromID;
那我觉得应该用这个结果来做
UPDATE Relationships
SET JsonPair = (combine result above and format to json)
WHERE JsonPair IS NULL;
我卡在了合并和格式化步骤。请问我可以得到帮助吗?
我正在使用 MySql
您可以使用 update/join 语法以及 json_object()
。
考虑:
update relationships r
inner join t_from f on f.fromid = r.fromid
inner join t_to t on t.to_id = r.to_id
set r.jsonpair = json_object(f.fromname, t.toname)
注意:from
和 to
是 reserved words in MySQL,因此 table 名称的选择不当。我在查询中将它们重命名为 t_from
和 t_to
。