我有一个表,代表相机的配置。
假设具有主键 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语法呢?
答案 0 :(得分:1)
假设configuration
包含有效的JSON对象,则可以使用json_contains_path()
进行过滤,并使用json_set()
来更新值:
update mytable set configuration = json_set(configuration, '$.D', 2)
where not json_contains_path(configuration, '$.D')