计算另一列中列的出现次数

时间:2016-08-24 21:06:25

标签: mysql

我有一个带有一组引用(序列化数组)的表,并且想要计算出现次数。例如,我的表看起来像

ID     type    count
206   "apple"   2
212   "apple"   1
217   "apple"   0
360   "apple"   1

现在我想计算水果中引用苹果ID的频率,这样我的最终表应该是这样的

{{1}}

我的第一个想法是计算字符串的出现次数':" $ ID";' (即':" 206&#34 ;;'),但我不知道如何为每个ID执行此操作,而且我不确切知道这是否会保存,因为这些是序列化数组

有没有办法用mysql做到这一点?

1 个答案:

答案 0 :(得分:0)

这适用于给定的数据:

select t1.ID, t1.type, count(t2.type) as `count`
from table1 t1
left join table1 t2
  on  t2.type = 'fruits'
  and t2.reference like concat('%"', t1.ID, '"%')
where t1.`type` <> 'fruits'
group by t1.ID, t1.type;

结果:

|  ID |  type | count |
|-----|-------|-------|
| 206 | apple |     2 |
| 212 | apple |     1 |
| 217 | apple |     0 |
| 360 | apple |     1 |

http://sqlfiddle.com/#!9/2a790/4

你可以用SQL做很多疯狂的事情 - 但这并不意味着你应该这样做。