mysql – 为什么这个group_concat无法正常工作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 为什么这个group_concat无法正常工作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1610字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 为什么这个group_concat无法正常工作?](/upload/InfoBanner/zyjiaocheng/899/bbd778ef3c65427f9f7c345759706f4e.jpg)
我不明白为什么这个GROUP_CONCAT不起作用,就外部查询而言,返回了3行所以我想通过它来组合group_concat但它不喜欢它…
http://sqlfiddle.com/#!2/24764/3
CREATE TABLE nested_category (
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
lft INT NOT NULL,
rgt INT NOT NULL
);
INSERT INTO nested_category VALUES(1,'ELECTRONICS',1,20),(2,'TELEVISIONS',2,9),(3,'TUBE',3,4),
(4,'LCD',5,6),(5,'PLASMA',7,8),(6,'PORTABLE ELECTRONICS',10,19),(7,'MP3 PLAYERS',11,14),(8,'FLASH',12,13),
(9,'CD PLAYERS',15,16),(10,'2 WAY RADIOS',17,18);
SELECT GROUP_CONCAT(rs.category_id, ',')
FROM
(
SELECT node.category_id, node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
FROM nested_category AS node,
nested_category AS parent,
nested_category AS sub_parent,
(
SELECT node.category_id, node.name, (COUNT(parent.name) - 1) AS depth
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'PORTABLE ELECTRONICS'
GROUP BY node.name
ORDER BY node.lft
)AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
AND sub_parent.name = sub_tree.name
GROUP BY node.name
HAVING depth = 1
ORDER BY node.lft
) as rs
GROUP BY rs.category_id
解决方法:
两件事情:
第一步:将GROUP_CONCAT(rs.category_id,’,’)更改为GROUP_CONCAT(rs.category_id)
逗号是默认分隔符,from the docs你可以看到,如果你想改变类似的分隔符
GROUP_CONCAT(rs.category_id SEPARATOR’|’)
第二:删除最后一个:
GROUP BY rs.category_id
如果按每个category_id进行分组,则表示每个category_id都在其自己的集合中,因此group_concat每行只有一个类别.
http://sqlfiddle.com/#!2/24764/7
内容总结
以上是互联网集市为您收集整理的mysql – 为什么这个group_concat无法正常工作?全部内容,希望文章能够帮你解决mysql – 为什么这个group_concat无法正常工作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。