mysql一对多查询合并多的一方的数据。

有时候会有这样一个需求, 查询的一条记录需要包含另一个表的多条记录,并且让多条记录成为一个字段组成最终的一条记录。比较难描述,看例子吧。

创建一个产品表:

   create table product(
    proId int(10),
    proName varchar(50)
   )

创建一个成分表:

  create table componen(
  comId int (10),
  proId int(10),
  comName varchar(50)
  )

案例需求:如果一个产品有多个成分,也就是一个产品表对应多个成分表,我想查出的结果,一条记录包含产品 proId, ProName, ComName,的字段。

思路:

  1. 先写出不含成分表的查询语句,
  2. 然后将一个产品对应的多个成分合并成一个字段,
  3. 将合成的字段插入到一个语句中。

实践:

 1. select p.proId , p.proName from product p;
 2. SELECT group_concat( c.comName ) FROM componen WHERE componen.proId= 1
 3. SELECT
        p.proId AS "产品id", 
        p.proName AS "产品名称",     
        (SELECT group_concat( c.comName ) FROM componen WHERE componen.proId
        = p.proId)AS "成分" 
     FROM
     product p;

*注意:第2步骤的语句和第三部引用第二部的语句有差别,那部分很重要的! *如果要对合并的一方去重:嵌套DISTINCT即可

(SELECT group_concat( DISTINCT(c.comName) ) FROM componen WHERE componen.proId= p.proId)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

性能为王:SQL标量子查询的优化案例分析

黄廷忠(网名:认真就输) 云和恩墨技术专家 个人博客:http://www.htz.pw/ 本篇整理内容是黄廷忠在“云和恩墨大讲堂”微信分享中的讲解案例,S...

39850
来自专栏数据之美

关于mysql 索引自动优化机制: 索引选择性(Cardinality:索引基数)

1、两个同样结构的语句一个没有用到索引的问题: 查1到20号的就不用索引,查1到5号的就用索引,为什么呢?不稳定? mysql> expla...

39380
来自专栏杨建荣的学习笔记

相差数十倍的SQL性能分析(r11笔记第98天)

今天处理开发同学提交的一个数据查询需求,看起来是一个很常规的SQL,但是有一点不同的是,他们提供了两份文件,一份是一个id列表,大概有3000多个id值,...

35780
来自专栏Python数据科学

【SQL刷题系列】:leetcode183 Customers Who Never Order

假设一个网站包含两个表: Customers和Orders。写出一个SQL查询语句找出所有没有任何订单的顾客。

13120
来自专栏Grace development

老项目重构手记之用户系统

重构首先要注意几个点 – 重构后功能的可扩展性 – 业务互相依赖的复杂度 – 脱离本身的业务进行重构 – 重构后的代码可读性与可维护性 – 性能的提升...

14720
来自专栏杨建荣的学习笔记

通过图表简化sql语句的表关联(r4笔记第70天)

在之前的博文中分享过一个执行了两天的一条sql语句,走了两个大表的扫描,导致执行时间很长,通过简化sql做了不小的改进,今天我们来看看还可以做些什么。 上次简化...

37640
来自专栏数据和云

SQL为王:oracle标量子查询和表连接改写

小鱼(邓秋爽) 云和恩墨专家,有超过5年超大型数据库专业服务经验,擅长oracle 数据库优化、SQL优化和troubleshooting 编辑手记:如何提高数...

49860
来自专栏Jerry的SAP技术分享

会说话的ABAP report

report代码直接call的MS的sound engine,通过sapi.dll暴露出来,

42430
来自专栏猿人谷

【性能提升神器】Covering Indexes

可能有小伙伴会问,Covering Indexes到底是什么神器呢?它又是如何来提升性能的呢?接下来我会用最通俗易懂的语言来进行介绍,毕竟不是每个程序猿都要像D...

6910
来自专栏java达人

SQL索引优化

序言 数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的S...

22480

扫码关注云+社区

领取腾讯云代金券