我有一个代表摄像机配置的表。
假设具有主键x的摄像机具有以下配置,作为json字符串,后来我在python中将其用作字典:{A:[...], B:[...]}
现在,我们决定为表添加一个主键为null的条目,该条目将被设置为项目默认值。表中只有一个条目,其主键为null,即其配置列值为{A:[...], C:[...]}
。
此刻,我使用一个非常简单的查询来返回摄像机及其配置:
SELECT pk, configuration FROM static.cameras
是否有办法返回相机及其配置,但是如果项目可用,请填写项目默认值中缺少的键?因此,对于字符串中的每个键,如果相机没有此键,它将从默认键填满。示例:
| pk | configuration |
| 01 |[A:10, B:20, C:1]|
| 02 |[A:200, B:3] |
| 03 |[D:1000] |
| NULL |[A:0, D:2] |
所需查询的结果将是:
01 [A:10, B:20, C:1, D:2]
02 [A:200, B:3, D:2]
03 [A:0, D:1000]
我知道查询后使用python轻松完成,遍历结果,但是有没有办法使用SQL语法呢?
您可以使用json_set()
:
update mytable set configuration = json_set(configuration, '$.D', 2)
where not json_contains_path(configuration, '$.D')
我将使用concat和IS NOT NULL
检查。像这样:
SELECT CONCAT(pk, ' ', configuration)
FROM static.cameras
WHERE pk IS NOT NULL