首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对大型数据库表进行分组和更新

对大型数据库表进行分组和更新
EN

Stack Overflow用户
提问于 2012-01-30 18:59:51
回答 1查看 207关注 0票数 0

我有一个包含1.61亿行的大表。表结构是entryid(varchar), dater(date), region(char), detail(varchar), views(int),前四列一起作为主键。我想做以下处理:

  1. detail包含www.google.comwww.google.cawww.google.ukwww.facebook.comfacebook.com等URL。我想对来自同一域的行进行分组,例如,使用LIKE "%.google.%" for googleLIKE "%.facebook.%" OR LIKE "facebook.%" for facebook就足够了。但是如果更新行,可能会有重复的键,如何使用ON DUPLICATE KEY UPDATE来和views?是否有比LIKE
  2. I更快的方法来删除region列,对行进行分组,并将viewsviews和插入到一个新表中。如何在一个命令中这样做?
  3. ,我想按月份对行进行分组(并更新views)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-30 19:11:21

对于MYSQL,尝试这样做,假设每一行的细节字段都类似于www.something.com。

代码语言:javascript
运行
复制
SELECT
   MONTH(dater),
   SUBSTRING_INDEX(SUBSTRING_INDEX(detail, '.', 2), -1) as url,
   sum(views)
from table
group by 
   MONTH(dater),
   SUBSTRING_INDEX(SUBSTRING_INDEX(detail, '.', 2), -1)

或者您可以使用一个子查询来使它看起来更干净:

代码语言:javascript
运行
复制
SELECT mth, url, sum(views) from
(
SELECT
   MONTH(dater) as mth,
   SUBSTRING_INDEX(SUBSTRING_INDEX(detail, '.', 2), -1) as url,
   views
from table) subq
group by 
   mth, url
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9069226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档