Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Mysql -- "group group_concat()“的可能解决方案?

Mysql -- "group group_concat()“的可能解决方案?
EN

Stack Overflow用户
提问于 2014-02-10 01:46:22
回答 1查看 99关注 0票数 0

是否可以根据聚合函数的结果对结果进行分组,而不将结果嵌套在其上?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"SELECT b.pizza, GROUP_CONCAT(t.topping_names SEPARATOR ',') AS topping_string FROM bascket AS b
LEFT JOIN toppings AS t ON t.pizza = b.pizza 
 GROUP BY pizza, topping_string "  

上面的查询应该返回按所选topping_string分组的所有比萨(应该返回唯一的pizza+toppings)。但是当然,这是无效的,因为group_concat是在分组之后完成的。因此,我看到的唯一选择是包装该查询并使其成为实际分组的子查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT sub.* FROM (  
SELECT b.pizza, GROUP_CONCAT(t.topping_names SEPARATOR ',') AS topping_string FROM bascket AS b
    LEFT JOIN toppings AS t ON t.pizza = b.pizza  
) AS sub  
GROUP BY sub.pizza, sub.topping_string  

这样做合适吗?还有别的选择吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-10 02:00:49

是的,这是正确的方法,如果您正在执行两个聚合,除了在子查询中执行第一个聚合之外,别无选择。

但是,您没有任何聚合,因此可以使用DISTINCT强制执行唯一性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT  DISTINCT 
        b.pizza, 
        GROUP_CONCAT(t.topping_names SEPARATOR ',') AS topping_string
FROM    bascket AS b
    LEFT JOIN toppings AS t 
        ON t.pizza = b.pizza
GROUP BY b.pizza;

注:如果您确实需要在子查询中执行聚合,则应该是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT sub.*, COUNT(*) AS Quantity FROM (  
SELECT b.pizza, GROUP_CONCAT(t.topping_names SEPARATOR ',') AS topping_string 
FROM bascket AS b
    LEFT JOIN toppings AS t ON t.pizza = b.pizza  
GROUP BY b.pizza
) AS sub  
GROUP BY sub.pizza, sub.topping_string  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21673706

复制
相关文章
MySQL方法GROUP_CONCAT的应用
开发中遇到这样的一个需求:用户表为A,角色表为B,用户角色关系通过C表多对多关联,我们需要查询出每一个用户所拥有的角色,以下图的格式显示:
IT小马哥
2022/09/23
7180
玩转mysql函授:concat以及group_concat
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
Java深度编程
2020/06/10
2.3K0
玩转mysql函授:concat以及group_concat
MySql行转列、group_concat使用
4、关于行转列、group_concat在项目中的实际应用,请参考本人blogEasyui动态显示列的应用实例
全栈程序员站长
2022/08/18
1.1K0
MySql行转列、group_concat使用
mysql之group_concat函数详解[通俗易懂]
group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
全栈程序员站长
2022/07/01
1.3K0
mysql之group_concat函数详解[通俗易懂]
MySQL中 concat() 以及 group_concat() 的使用
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
Java帮帮
2018/12/25
2.7K0
MySQL中 concat() 以及 group_concat() 的使用
MySQL中group_concat()函数的排序方法
group_concat()函数的参数是可以直接使用order by排序的。666。。下面通过例子来说明,首先看下面的t1表。
DencyCheng
2019/06/14
2.7K0
mysql中group_concat长度限制的问题
在mysql中的group_concat函数默认支持的最大字符数为1024。 当你使用group_concat函数时,超出第1024字符的字符会全部丢失。
botkenni
2023/10/09
2.6K0
MySQL中group_concat函数用法总结
将group by产生的同一个分组中的值连接起来,返回一个字符串结果。group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回的列。例如:
全栈程序员站长
2022/09/05
3.2K0
MySQL中group_concat()函数用法总结
group_concat函数应该是在内部执行了group by语句,这是我的猜测。
用户7657330
2020/08/14
1.5K0
浅析MySQL中concat及group_concat的使用
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
全栈程序员站长
2022/07/19
5.9K0
浅析MySQL中concat及group_concat的使用
MySQL中group_concat函数深入理解
6.使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
IT工作者
2022/04/16
7730
MySQL函数-concat、concat_ws、group_concat
concat()函数是将多个字符串组合在一起,形成一个大的字符串;如果连接的字符串中存在一个为NULL,则输出的结果为NULL,语法格式为:
皮大大
2021/03/01
2.6K0
MySQL函数-concat、concat_ws、group_concat
十一、GROUP_CONCAT的使用
GROUP_CONCAT 配合 group by 一起使用,用于将某一列的值按照指定的分割符进行拼接,MySQL 默认的分隔符为都好。语法如下:
喵叔
2021/06/25
4.8K0
解锁MySQL group_concat的无限可能性:解决长度限制并实现高效查询
在数据库应用程序中,我们经常需要将多个行合并为一个字符串,以满足特定的业务需求。MySQL提供了一个非常强大的函数来执行这项任务 - GROUP_CONCAT。然而,GROUP_CONCAT也存在长度限制,这可能会在某些情况下限制我们的应用程序功能。本文将深入探讨如何使用GROUP_CONCAT,并提供解决GROUP_CONCAT长度限制的方法,以及一个Java代码示例,帮助你的数据库应用程序更高效地执行字符串合并操作。
疯狂的KK
2023/09/15
5.8K0
解锁MySQL group_concat的无限可能性:解决长度限制并实现高效查询
Group_concat介绍与例子
进公司做的第一个项目就是做一个订单追踪查询,里里外外连接了十一个表,作为公司菜鸡的我麻了爪.
全栈程序员站长
2022/07/07
2610
Group_concat介绍与例子
【MySQL】:CONCAT()、CONCAT_WS()、GROUP_CONCAT() 函数
This function returns a string result with the concatenated non-NULL values from a group. It returns NULL if there are no non-NULL values. The full syntax is as follows:
WEBJ2EE
2021/09/24
2K0
【MySQL】:CONCAT()、CONCAT_WS()、GROUP_CONCAT() 函数
MySQL中使用group_concat遇到的问题及解决
在使用group_concat的过程中遇到个问题,这里记录一下:在MySQL中有个配置参数group_concat_max_len,它会限制使用group_concat返回的最大字符串长度,默认是1024。
星哥玩云
2022/08/18
2.1K0
MySQL中concat()、concat_ws()、group_concat()函数
返回值: 结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
一觉睡到小时候
2022/11/16
4.3K0
模拟 GROUP_CONCAT() 函数
MySQL 提供了 GROUP_CONCAT() 函数,可以很方便地针对某字段下的值聚合成一个字符串,字符串内部默认使用“,”分割。
白日梦想家
2020/07/20
4380
点击加载更多

相似问题

MySQL GROUP_CONCAT

31

mysql GROUP_CONCAT

20

mysql group_concat

12

MySQL Group_Concat不在

21

Mysql group_concat错误

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文