我有一个带有一组引用(序列化数组)的表,并且想要计算出现次数。例如,我的表看起来像
ID type count
206 "apple" 2
212 "apple" 1
217 "apple" 0
360 "apple" 1
现在我想计算水果中引用苹果ID的频率,这样我的最终表应该是这样的
{{1}}
我的第一个想法是计算字符串的出现次数':" $ ID";' (即':" 206&#34 ;;'),但我不知道如何为每个ID执行此操作,而且我不确切知道这是否会保存,因为这些是序列化数组
有没有办法用mysql做到这一点?
答案 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做很多疯狂的事情 - 但这并不意味着你应该这样做。