【问题标题】:mysql query to group record and generate custom columnsmysql查询对记录进行分组并生成自定义列
【发布时间】:2022-01-19 15:21:13
【问题描述】:

所以我有一个名为“log”的表,其中包含以下列,

id, endpoint ,response ,group

SAMPLE DATA.
1. endpoint1 ,{"last_name":"data here"}  ,1234
2. endpoint2 ,{"first_name":"data here"} ,1234
3. endpoint3 ,{"dob":"12-21-2301"}       ,1234 

我想要实现的是编写一个查询,该查询可以生成按“ group" 列,最终输出应该是这样的。

{"last_name","data here","first_name":"data here","dob":"12-21-2301"}

对于每条记录,每个键都是一列。 谢谢

【问题讨论】:

  • 什么是精确 MySQL版本?
  • mysql版本为8.0

标签: mysql sql database


【解决方案1】:
WITH RECURSIVE
cte1 AS ( SELECT response, 
                 `group`,
                 ROW_NUMBER() OVER (PARTITION BY `group`) rn
          FROM log ),
cte2 AS ( SELECT response, 
                 `group`,
                 rn
          FROM cte1
          WHERE rn = 1 
        UNION ALL
          SELECT JSON_MERGE_PRESERVE(cte1.response, cte2.response), 
                 cte1.`group`,
                 cte1.rn
          FROM cte2
          JOIN cte1 USING (`group`)
          WHERE cte2.rn + 1 = cte1.rn )
SELECT DISTINCT
       FIRST_VALUE(response) OVER (PARTITION BY `group` ORDER BY rn DESC) responses, 
       `group`
FROM cte2;

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=913b1923d7d5dbc7e42baeefb6e6ec86

【讨论】:

  • 谢谢,成功了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
相关资源
最近更新 更多