mysql – 如何在两个表之间拆分,计数和插入?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 如何在两个表之间拆分,计数和插入?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1335字,纯文字阅读大概需要2分钟。
内容图文
![mysql – 如何在两个表之间拆分,计数和插入?](/upload/InfoBanner/zyjiaocheng/906/53e266fa1bcd484c8fc15fb1f01c14c5.jpg)
我有这样一张桌子:
GROUP COUNT tag1, tag2 23 tag1, tag2, tag3 12 tag2, tag3 10
我想创建一个这样的表:
TAG COUNT tag1 35 tag2 45 tag3 22
基本上,我想在第一个表中拆分字符串,然后计算出现的数,然后插入到新表中.我发现在MySQL中拆分字符串越来越困难.我不介意把结果带到我的PHP并在那里使用它,但是这个表是32000行,由于某种原因,我的PHP进程进入了一个无限期的SLEEP模式.
所以,任何关于如何使用纯SQL命令实现这一点的指针将非常感激.
解决方法:
您可以在SQL中执行此操作,但它需要一些技巧.您可以通过执行以下操作来提取列表中字符串的第n个元素:
select reverse(substring_index(reverse(substring_index(list, ', ', n)), ',', 1))
最里面的substring_index()检索到第n个项目的所有内容.然后反转字符串并获取第一个项目.最后,再次反转以撤消另一个反向.
第二个技巧是进行交叉连接以引入数字列表.您的列表最多包含3个元素,因此列表中最多需要3个元素.示例查询通过使用union all将数字组合在一起来完成此操作;你可能有某种数字表.
最后一步是汇总数据并总结:
select tag, SUM(count)
from (select reverse(substring_index(reverse(substring_index(group, ', ', n.n)), ',', 1)) as tag, count
from t cross join
(select 1 as n union all select 2 union all select 3
) n
where n.n <= 1+(length(GROUP) - length(replace(group, ',', '')))
) t
group by tag
我没有反驳查询中的所有内容.通常,在SQL中使用像count或group这样的保留字的列是不好的做法.
内容总结
以上是互联网集市为您收集整理的mysql – 如何在两个表之间拆分,计数和插入?全部内容,希望文章能够帮你解决mysql – 如何在两个表之间拆分,计数和插入?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。