用带分隔符的字符串分组

优素福

我有一张桌子,我在这里保存他的祖先的每条记录

+----+------------+
| id | ancestors  |
+----+------------+
|  1 | ,1,        |
|  2 | ,2,        |
|  3 | ,3,1,      |
|  4 | ,4,2,      |
|  5 | ,5,3,1,    |
|  6 | ,6,4,2,    |
|  7 | ,7,5,3,1,  |
+----+------------+

如何分组id但要这样group by ','id','而不要group by id得到这样的结果:

+----+------------+
| id | count      |
+----+------------+
|  1 | 4          |
|  2 | 3          |
|  3 | 3          |
|  4 | 2          |
|  5 | 2          |
|  6 | 1          |
|  7 | 1          |
+----+------------+

我的要求是id在的整个列中找到的计数ancestors

萨拉斯·钱德拉(Sarath Chandra)

您的要求似乎是countid中的整个列中找到ancestors

因此,COUNT在依赖子查询中使用应该很好,如下所示:

SELECT a.id, 
(SELECT count(*) FROM ancestors_table t where t.ancestors LIKE CONCAT('%,',a.id,',%') )
  FROM ancestors_table a; 

在这里使用SQLFiddle

更新:解决了两位数或更多数字的问题。1仅匹配1。不能匹配10、11等。这是可能的,因为您的列会附加,在每个值的周围。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章