技术杂谈 | mysql 拼接json

1,243 阅读2分钟

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

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

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

idnametypenum1num2num3num4
1实验小学小学1234
2外国语学校高中5678
3第七中学初中9101112

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

idnametypecontent
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,除非万不得已。因为真的恶心,还慢,还麻烦。