zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Mysql 拼接json

2023-03-20 14:51:58 时间

最近是和mysql杠上了。由于需要将公司数据中台中的数据同步到我们自己的mysql库中,并且使用的是将sql结果集全量同步过来的方式,就促使我在用平台的时候,接触到了大量的sql使用场景。今天遇到的是如何使用sql拼写json, 和大家分享一下。

这里说明下,如果大家的业务本身可以通过api的方式来实现,那么就没必要在sql来实现了。我们的业务需求是必须用sql实现,所以才这么搞的,你们都不知道,这段时间我是有多么怀念java语言,怀念在idea上纵横驰骋的日子。。。

好了闲话少说,我们直接步入正题。先给出原表数据test

id

name

type

num1

num2

num3

num4

1

实验小学

小学

1

2

3

4

2

外国语学校

高中

5

6

7

8

3

第七中学

初中

9

10

11

12

好了,而我最终想的结果是:

id

name

type

content

1

实验小学

小学

{'num1':'1','num2':'2','num3':'3','num4':'4'}

2

外国语学校

高中

{'num1':'5','num2':'6','num3':'7','num4':'8'}

3

第七中学

初中

{'num1':'9','num2':'10','num3':'11','num4':'12'}

这表实在太难做了,大家记得给我点赞哈。码字不易。 这个应该都看懂了吧,就是我想把最后几列的数据,以json的方式存储到content字段中(别问我为什么会有这样的需求,他就是有)。给出查询的sql.

select 
    id, name, type,CONCAT(
     '{',
        CONCAT_WS(',',
            CONCAT('"','num1', '":"', num1, '"'),
            CONCAT('"','num2', '":"', num2, '"'),
            CONCAT('"','num3', '":"', num3, '"'),
            CONCAT('"','num4', '":"', num4, '"')
        ),
    '}'
)content from test

执行完毕后就能得到我们你想要的结果了。好了今天内容介绍到这。在强调一下,能用语言操作,尽量别用sql,除非万不得已。因为真的恶心,还慢,还麻烦。