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

网站建设优化托管如何给网站添加cnzz

网站建设优化托管,如何给网站添加cnzz,有口碑的合肥网站建设,泉州网站建设技术公司本场景对应情景如下: 三个数据表,一个表的两个字段分别关联了另外两个表各自的id数据,可能包含多个id(两个1对多关联)。 目录 数据表准备 需求1、查询c表的列表数据,要求获得关联的b表中的name&#xf…

本场景对应情景如下:

三个数据表,一个表的两个字段分别关联了另外两个表各自的id数据,可能包含多个id(两个1对多关联)。

目录

数据表准备

需求1、查询c表的列表数据,要求获得关联的b表中的name(多个)

需求2、在需求1基础上,同时查询关联的a表的name(多个)

需求3、在需求2基础上,增加整体聚合结果按“创建时间”排序、分页


数据表准备

共三张表,a、b、c,c表中关联了a和b的id

demo_bs表

ae822a1d5b33478cb4ad0cb5313eae50.png

demo_as表

f95b2267035949209fa34ea660ccad3a.png

demo_cs表

94cdf3ea6629474e988878aaf548c287.png

a_ids:关联的a表的id列表,使用英文逗号分隔;可不关联a,不关联时为空字符串;

b_ids:关联的b表的id列表,使用英文逗号分隔;必定关联了b中的某些id,至少关联了1个;

需求1、查询c表的列表数据,要求获得关联的b表中的name(多个)

         select c.id AS id,c.name AS name,c.created_at AS createdAt,c.b_ids as bIDs, c.a_ids as aIDs, group_concat(b.name SEPARATOR ',')  as bNamesfrom demo_cs  cleft join demo_bs  bon FIND_IN_SET(b.id, c.b_ids) > 0where c.name like '%c%'group by c.id

查询结果

b30c61afa3234824a9860ad3ae7cb19b.png

其中where c.name like '%c%'为c表本表的name字段查询条件。

FIND_IN_SET(b.id, c.b_ids) > 0表示检查b.id值在c.b_ids中的索引(且后者是以逗号拼接的字符串),索引从1开始,因此判断结果只要>0则表示前者在后者中存在。

group_concat(b.name SEPARATOR ',')表示将b表的name字段以逗号拼接作为新的一列,那么是b表的哪些name呢?即符合on FIND_IN_SET(b.id, c.b_ids) > 0 条件的记录的name。

需求2、在需求1基础上,同时查询关联的a表的name(多个)

select r.id,r.name,r.createdAt,r.bIDs as bIDs,r.bNames as bNames,r.aIDs as aIDs,group_concat(a.name SEPARATOR ',') as aNamesfrom(select c.id AS id,c.name AS name,c.created_at AS createdAt,c.b_ids as bIDs, c.a_ids as aIDs, group_concat(b.name SEPARATOR ',')  as bNamesfrom demo_cs  cleft join demo_bs  bon FIND_IN_SET(b.id, c.b_ids) > 0where c.name like '%c%'group by c.id) rleft join demo_as aon FIND_IN_SET(a.id, r.aIDs) > 0where  r.bNames like '%b%'group by r.id

查询结果

ae5a3a1db82d4da2baad1d92c502c8ca.png

其中where  r.bNames like '%b%'为聚合后数据的b的名称列表的查询条件。此时用于在内部查询基础上如

b5_hello,bb3,b2

中(即bNames)判断是否包含b。如果将此条件放在子查询内部:如

where  b.name like '%b%'

会导致数据不准确,b.name like查询的是仅b表的name字段的模糊查询,可能会导致子查询查出的数据量减少,注意查询条件的定位,不同位置含义不同。

因为查询的主表是c表,因此from内部的子查询为数据基本盘,from内部的子查询的数据准确则整体数据准确。

需求3、在需求2基础上,增加整体聚合结果按“创建时间”排序、分页

select r.id,r.name,r.createdAt,r.bIDs as bIDs,r.bNames as bNames,r.aIDs as aIDs,group_concat(a.name SEPARATOR ',') as aNamesfrom(select c.id AS id,c.name AS name,c.created_at AS createdAt,c.b_ids as bIDs, c.a_ids as aIDs, group_concat(b.name SEPARATOR ',')  as bNamesfrom demo_cs  cleft join demo_bs  bon FIND_IN_SET(b.id, c.b_ids) > 0where c.name like '%c%'group by c.id) rleft join demo_as aon FIND_IN_SET(a.id, r.aIDs) > 0where  r.bNames like '%b%'group by r.idorder by r.createdAt desclimit 10 offset 0

查询结果

1e42b34cebff4cf28af7aa37cb555b0c.png

注意,外层的on FIND_IN_SET(a.id, r.aIDs) > 0 条件是作用在a表和查询出来的r结果之上因此aIDs即使为空字符串,也不会导致最终结果的数量减少,而是对应的aNames查出来为空而已(aIDs没有id,对应的aNames为空正常)。

如果需要第二页,则将最后面的limit 10 offset 0 换为 limit 10 offset 10即可。

http://www.dtcms.com/a/569472.html

相关文章:

  • 免费物流公司网站模板小程序定制开发团队
  • 曙光超算-VASPkit教程
  • MiniEngine学习笔记 : CommandQueue
  • ArCHer:LLM 的高效分层强化学习框架,突破多轮决策瓶颈
  • shell 3-循环
  • Java_LinkedList底层结构
  • 家装网站建设案例搜狗搜索网页版
  • 国内免费网站服务器推荐深圳网站建站公司
  • JavaScript逆向Vue处理事件和捕获错误的核心逻辑
  • Python汤姆猫
  • Java中,直接使用null.equals()
  • GIS坐标系转换相关基本理论
  • 网站开发标书品牌网络推广方案
  • 门户网站制作服务ppt做的模板下载网站有哪些内容
  • Pycharm 中jupyter notebook变量窗口只显示特殊变量
  • 怀化优化生育政策seo怎么做优化排名
  • 1984年-2022年全球年度地表水扩张或消退时间数据集
  • 三乡网站开发网络营销的策略
  • APM学习(4):ArduPilot程序运行流程
  • seo站内站怎么做河北 网站建设
  • U-Boot零基础入门第二篇(如何看懂uboot目录?)
  • Javascript循环语句之while循环
  • BuildingAI 用户信息弹出页面技术架构
  • C#串口通讯助手
  • 企业网站icp备案建站哪家好
  • SparkSQL读取普通文件的方式
  • 网站平台推广方案网站内页如何做排名
  • 各个系统的 docker安装
  • 大庆建设网站表格下载建设一个网站需要哪些方面的开支
  • 各种网站建设报价制作网页网站的软件是