如何获取GROUP CONCAT(php,mysql)每个不同值的出现次数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何获取GROUP CONCAT(php,mysql)每个不同值的出现次数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1483字,纯文字阅读大概需要3分钟。
内容图文
![如何获取GROUP CONCAT(php,mysql)每个不同值的出现次数](/upload/InfoBanner/zyjiaocheng/885/a6afa481ac2443f2b8e77117632f4603.jpg)
我知道这很容易做到,但是我还没有正确的方法来做.我找到了Here,但与我需要的有所不同,并且没有做出积极的贡献.有人帮忙.
我有这样的桌子
name |status
-------------
mike |yes
mike |yes
mike |no
mike |ney
john |no
john |ney
john |yes
我想输出这样的东西
name |status |total
------------------------------
mike |yes-2,no-1,ney-1 | 4
john |yes-1,no-1,ney-1 | 3
我尝试像这样使用GROUP_CONCAT
result = mysql_query("SELECT name, GROUP_CONCAT(DISTINCT status) AS status
FROM table GROUP BY name ");
while($row = mysql_fetch_array($result)){
$st[] = $row['status'];
$status=explode(",",$row['status']);
$total = count($status);
echo $row['name']."|".$row['status']."|".$total."<br><br>"; }
我想获取每个不同的$row [‘status’]的数量,如果可能的话,一种获取$total的更好方法.
编辑1
name | yes | no | ney | total
------------------------------
mike |2 |1 |1 | 4
john |1 |1 |1 | 3
第二个输出已实现Here
解决方法:
无需使用php,因为您可以使用纯SQL获得所需的结果集:
SELECT name, GROUP_CONCAT(totalPerStatus) AS status,
(SELECT COUNT(*) FROM mytable WHERE name = t.name) AS total
FROM (
SELECT name,
CONCAT(status, '-', COUNT(*)) AS totalPerStatus
FROM mytable
GROUP BY name, status ) t
GROUP BY name;
通过子查询中的名称,状态分组,可以为每个“名称”每个“状态”计数.使用CONCAT会产生以下结果集:
name totalPerStatus
-----------------------
john ney-1
john no-1
john yes-1
mike ney-1
mike no-1
mike yes-2
外部查询在totalPerStatus上使用GROUP_CONCAT生成所需的结果集.
内容总结
以上是互联网集市为您收集整理的如何获取GROUP CONCAT(php,mysql)每个不同值的出现次数全部内容,希望文章能够帮你解决如何获取GROUP CONCAT(php,mysql)每个不同值的出现次数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。