我的数据是这样的,
我在表字段中有多个值,每个值的数据字段都有自己的唯一值。但是,tablea的数据值与mytable表中的格式相同。这同样适用于表字段中的所有记录。
我正在使用 JSON_EXTRACT
结合 CASE
声明。
SELECT
CASE
WHEN
Table = 'table A'
THEN
CONCAT_WS('\n','Name: ',
JSON_EXTRACT(Data, '$.name'))
END AS 'tableA',
CASE
WHEN
Table = 'table B'
THEN
CONCAT_WS('\n','Location: ',
JSON_EXTRACT(Data, '$.fieldType'))
END AS 'tableB' from myTable
问题是我会得到空值。
我得到以下结果,
我期待以下结果,
我想避免空值。有没有其他方法提取数据?我正在使用mysql。
3条答案
按热度按时间f2uvfpb91#
方案一:
方案二:
这是演示
请注意,我在演示中更改了表和列的名称。
pzfprimi2#
我想你只需要条件聚合:
如果json中可能有多个匹配项,那么您可能需要
GROUP_CONCAT()
取而代之的是:a8jjtwal3#
注意:您必须了解这些不是数据库中的实际空值,而是因为您的要求是读取行并将其转换为列,因此最终结果中的每一行对于除相应派生列以外的所有列都将具有空值。我们可以在每一列上使用max(每个“case”与您的查询相同)。
你可以在下面试试,