当前位置: 首页 > news >正文

网站开发推荐资料网站搭建设计 是什么

网站开发推荐资料,网站搭建设计 是什么,网站建设什么价格,pcms网站开发数据库:mysql 5.7版本以上 问题:一对多数据,实现输出一条数据,并将多条数据转换成json对象输出,可以实现一对多个字段。 项目中关系较为复杂,以下简化数据关系如下: t1是数据表,t…

数据库:mysql 5.7版本以上

问题:一对多数据,实现输出一条数据,并将多条数据转换成json对象输出,可以实现一对多个字段。

项目中关系较为复杂,以下简化数据关系如下:

t1是数据表,t2是用户表,一条数据,对应授权给多个用户,给出每条数据,对应授权所有用户和用户名信息

SELECTt1.id,CAST( GROUP_CONCAT( json_object( 'id', t2.user_id 'name', t2.name)) AS CHAR ( 10000 ) CHARACTER SET utf8 ) AS jsonStr 
FROMt1LEFT JOIN t2 ON t1.id = t2.user_id 
GROUP BYt1.id

结果:

05033d2aa90823bb7ea09851    {"id": "01", "name": "张三"}
150aa723a9ae1e60d6e2c646    {"id": "02", "name": "王五"},{"id": "04", "name": "李四"}
254e636931f52799432933de    {"id": null, "name": null}

ps:如果连表数据为空,这里任然有json{"id": null, "name": null}

这种sql,结果有一个弊端,json字符串无法直接转换成List的json对象,需要加中括号[]

方案一:java代码中拼接

 StringBuffer stringBuffer = new StringBuffer();stringBuffer.append("[");stringBuffer.append(data.get("shareJsonStr"));stringBuffer.append("]");List<Map<String, String>> shareJsonList = JSONArray.parseObject(stringBuffer.toString(), List.class);

方案二:concat函数实现

SELECTt1.id,CAST( CONCAT('[',GROUP_CONCAT( json_object( 'id', t2.user_id 'name', t2.name)),']') AS CHAR ( 10000 ) CHARACTER SET utf8 ) AS jsonStr 
FROMt1LEFT JOIN t2 ON t1.id = t2.user_id 
GROUP BYt1.id

结果:

05033d2aa90823bb7ea09851    [{"id": "01", "name": "张三"}]
150aa723a9ae1e60d6e2c646    [{"id": "02", "name": "王五"},{"id": "04", "name": "李四"}]
254e636931f52799432933de     [{"id": null, "name": null}]

但是我在项目中并未使用方案二,而是使用方案一

因为在复杂情况下,方案二的处理速度过慢,不如在代码中使用括号拼接速度快。

我查询资料,理论上数据库执行会比java中拼接快,可能与具体场景、数据索引、数据库版本执行速度有关。

大数据量场景需要具体问题具体分析。


知识点:

1.json_object函数,将多个字段转成一个json对象,这里用了两个字段。

json_object( 'id', t2.user_id 'name', t2.name)

        mysql需要5.7版本,其他数据库大多数有次函数

2.CAST函数,json输出类型转换

CAST( json AS CHAR ( 10000 ) CHARACTER SET utf8 )

        数据库json对象是二进制,输出字符串需要转换成utf8的方式。

        其中char(10000)代表字符最长字段

        mysql可以使用此函数也可以是用convert函数,但是convert其他数据库不一定支持,相对cast通用性更高。

3.GROUP_CONCAT函数,进行分组拼接多条jason对象为一个字符串输出

GROUP_CONCAT( json_object( 'id', t2.user_id 'name', t2.name))...GROUP BY t1.id

5.使用中需要加中括号[],实现json的list解析使用

http://www.yayakq.cn/news/96331/

相关文章:

  • 网站公司怎么做的好处自主网站建设
  • 快递建站收费标准做网站ceo
  • 一个做问卷调查的网站好net可以开发wordpress
  • 花生壳可以用来做网站吗广州市学校网站建设公司
  • 做电商网站的公司起名大全文库
  • 羊肉口报关做网站搜索引擎优化的主要策略
  • ui设计35岁就被淘汰了吗上海关键词优化方法
  • 免费医疗网站模板免备案域名购买网站
  • 网站开发实践研究报告中国建设教育业协会网站
  • 深圳建立网站的公司山东住房建设厅官网站首页
  • 网站管理员怎样管理自己有网站怎么做点卡
  • 北京网站关键词排名营销手段有哪些
  • 建筑贴图素材网站公司制作网站流程
  • 做企业网站需要多久免费wordpress主题内容怎么改
  • 怎么在自己电脑上搭建网站上海app外包公司
  • 如何把网站做成app导游网站如何建设的
  • 临沭做网站温州seo按天扣费
  • 做网站好的网站建设公司哪家好app开发制作网站平台
  • 网站做301重定向的作用dede网站建站教程
  • 继续浏览此网站(不推荐)云开发壁纸小程序
  • 工艺品做网站怎么制作微信公众号文章
  • 网站板块设置附近网站建设服务公司
  • 陇南市响应式网站建设北京网站建设亿玛酷出名5
  • 网站外链建设分析嘉兴网站排名优化
  • 电影资源网站开发网站建设的专业知识
  • 敦煌网网站推广方式佛山洛可可设计公司
  • 交易平台网站程序dedecms生成xml网站地图
  • 连锁餐饮网站建设如何维护公司网页
  • 盐城网站建设服务汕头最新新闻消息
  • 网站建设有关的职位wordpress一键登录