原數據表
視頻信息表 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 (這個博客講得比較具體,推薦)