SQL:将两列合并为一个查询结果

问题描述 投票:0回答:2

我有一个代表摄像机配置的表。

假设具有主键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语法呢?

mysql sql
2个回答
0
投票

您可以使用json_set()

update mytable set configuration  = json_set(configuration, '$.D', 2)
where not json_contains_path(configuration, '$.D')

0
投票

我将使用concat和IS NOT NULL检查。像这样:

SELECT CONCAT(pk, '    ', configuration)
FROM static.cameras
WHERE pk IS NOT NULL
© www.soinside.com 2019 - 2024. All rights reserved.