zoukankan      html  css  js  c++  java
  • 数据库联表统计查询 Group by & INNER JOIN

    原数据表

    视频信息表  tab_video_info

    播放记录表  tab_play_record

    需求

    统计播放量(已经开始播放)最多的前20个视频;

    SELECT  a.video_id, SUM(`is_play`) as total
    FROM `tab_video_info` as a INNER JOIN  `tab_play_record` as b ON a.video_id = b.video_id 
    GROUP BY a.video_id
    ORDER BY total DESC
    LIMIT 0 , 40;

    统计结果

    INNER JOIN 语法

    INNER JOIN 连接两个数据表的用法:
    SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

    INNER JOIN 连接三个数据表的用法:
    SELECT * FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

    INNER JOIN 连接四个数据表的用法:
    SELECT * FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号

    INNER JOIN 连接五个数据表的用法:
    SELECT * FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号

    连接六个数据表的用法:略,与上述联接方法类似,大家举一反三吧:)

    注意事项:
    在输入字母过程中,一定要用英文半角标点符号,单词之间留一半角空格;
    在建立数据表时,如果一个表与多个表联接,那么这一个表中的字段必须是“数字”数据类型,而多个表中的相同字段必须是主键,而且是“自动编号”数据类型。否则,很难联接成功。
    代码嵌套快速方法:如,想连接五个表,则只要在连接四个表的代码上加一个前后括号(前括号加在FROM的后面,后括号加在代码的末尾即可),然后在后括号后面继续添加“INNER JOIN 表名X ON 表1.字段号=表X.字段号”代码即可,这样就可以无限联接数据表了

    inner join(等值连接) 只返回两个表中联结字段相等的行 
    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
    right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

    Group By 用法

    “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

    具体用法说明:http://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html  (这个博客讲得比较具体,推荐)  

  • 相关阅读:
    python读写操作(txt, mat, xls, etc文件)
    开发linux版QQ就是支持未来的国产操作系统
    为知笔记linux绿色版的快速调用
    数学物理中的常见误区
    markdown语法小结
    信息爆炸时代的知识获取
    matlab: 数据的读写
    APS期刊投稿准备: REVTex格式
    markdown基本语法
    常见的数学关系
  • 原文地址:https://www.cnblogs.com/AllenChou/p/7867454.html
Copyright © 2011-2022 走看看