来自多表和计数的 mysql group_concat

Posted

技术标签:

【中文标题】来自多表和计数的 mysql group_concat【英文标题】:mysQL group_concat from multi table and count 【发布时间】:2019-08-09 09:12:12 【问题描述】:

我尝试将单表转换为多表提取 单表工作完美,但多表提取出错。请任何人都可以帮忙

db-fiddle 单表完美运行 https://www.db-fiddle.com/f/mTHmv2idQwkdPZSqmRPi2Z/4

但是我做的这个多表有什么问题??? https://www.db-fiddle.com/f/eUAUt53neNMBsnP1QxjzGJ/5

我希望下面的输出与我提到的单个表的小提琴相同。你可以检查一下小提琴。

|----------------------|------------------| |卖家 |状态 | |----------------------|------------------| | S1 |C3:3,C1:2,C2:2 | |----------------------|------------------| | S2 |C3:1,C1:2,C2:1 | |----------------------|------------------|

【问题讨论】:

已更新。我最初尝试过......有一些错误,我认为可能是格式不正确,但这次让我添加了。 @raj 目前我正在像这个小提琴db-fiddle.com/f/eUAUt53neNMBsnP1QxjzGJ/2 一样退出,这是错误的 【参考方案1】:

您获得的记录多于预期的原因是您的查询中有多个联接。

试试下面的。这应该返回给您:

select seller, group_concat(cid,' :', cnt  SEPARATOR ',') 
from
(SELECT  cases.SELLER, cases_cstm.customerid as cid, COUNT(*) as cnt FROM 
cases, cases_cstm WHERE cases.id=cases_cstm.id_c GROUP BY  cases.SELLER, 
cases_cstm.CUSTOMERID) q
group by seller;

如果您需要客户 ID 的计数,您应该在您的选择子句中包含 count(cid)。希望这会有所帮助!

【讨论】:

现在工作!!!!谢谢拉杰。哦,我得到了错误,我不得不在最上面的选择中使用不同的变量,并在最下面的分组中使用......这是错误的。当我不得不使用卖家时,我正在使用数据库表变量名....cases.SELLER。

以上是关于来自多表和计数的 mysql group_concat的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 和雄辩的返回结果来自多对多关系

压缩一些模块,包括来自多模块 maven 项目的目标目录

MySQL进阶实战6,缓存表视图计数器表

C++ std::vector 可以同时处理来自多线程的 push_back 吗?

如何查询数据库以查找包含来自多选 (Laravel) 的 json 数据的列中的元素

s-s-rS 2008 R2 参数来自多选查询