也许是我累了,但我却忽略了这一点。
假设我想展平这张 table :
a_id a_val b_id b_val c_id c_val d_id d_val
1 a 10 b 100 c 1000 f
1 a 20 d 200 g null null
2 e 30 h 300 i null null
2 j 40 k null null null null
3 l null null null null null null
进入此查询结果:
id mystring
1, (1:a,10:b,100:c,1000:f),(1:a,20:d,200:g)
2, (2:e,30:h,300:i),(2:j,40:k)
3, (3:l)
该表仅呈现四个深度级别(a、b、c、d),因此不存在动态 SQL 问题。
现在我通常只使用 GROUP_CONCAT(CONCAT(...)) 但这不适用于存在空值。也许使用合并可以解决这个问题,但是......我现在感觉很愚蠢......而且我无法弄清楚。
不幸的是,我无法在此安装上使用 mysql json 服务,因此我需要构建数据。谢谢。
最佳答案
这里的解决方案可能只是巧妙的串联和 IFNULL
调用的组合。我在黑暗中拍摄的:
SELECT a_id, GROUP_CONCAT(CONCAT('(',
a_id, ':', a_value, ',',
IFNULL(b_id, ''), IF(b_id IS NOT NULL, ':', ''), IFNULL(b_val, ''),
...repeat for c and d
')'
) SEPARATOR ',')
FROM table
GROUP BY a_id;
关于mysql - 展平表以准备 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38511571/