數據庫聯表統計查詢 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  (這個博客講得比較具體,推薦)  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM