标签:GROUP score CONCAT MySQL testgroup id SELECT
问:一个表中有两个字段:id,父id,如何求出父id下面的所有id呢?
建表:
CREATE table test (
id int(4) ,
parent_id int(4)
);
添加数据:
尝试一:
SELECT parent_id,id from test GROUP BY parent_id
结果:
显然是错误的,每一组只显示了一条数据, 没达到我们的目的。
经查阅资料发现:使用group_concat()可以将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
尝试二:
SELECT parent_id,GROUP_CONCAT(id) from test GROUP BY parent_id
结果:
成功显示出了所有的子id。
拓展
group_concat()函数完整语法如下:
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
示例:SELECT * FROM testgroup
表结构与数据如上
现在的需求就是每个id为一行 在前台每行显示该id所有分数
- SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id
可以看到 根据id 分成了三行 并且分数默认用 逗号 分割 但是有每个id有重复数据
接下来去重:
- SELECT id,GROUP_CONCAT(DISTINCT score) FROM testgroup GROUP BY id
排序:
- SELECT id,GROUP_CONCAT(DISTINCT score ORDER BY score DESC) as result FROM testgroup GROUP BY id
最后可以设置分隔符:
- SELECT id,GROUP_CONCAT(DISTINCT score ORDER BY score DESC SEPARATOR '-') as result FROM testgroup GROUP BY id
标签:GROUP,score,CONCAT,MySQL,testgroup,id,SELECT 来源: https://www.cnblogs.com/tff612/p/15513606.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。