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