(1) GROUP BY 语句 :
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
语法:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
如上图是原数据库,下图是操作后的数据库–将 site_id > 2 的所有重复的 site_id 表格中的 count 相加结果输出:
mysql> select access_log.site_id,sum(access_log.count) AS nums
-> FROM access_log
-> where access_log.site_id > 2
-> Group by access_log.site_id;
(2) GROUP BY 语句
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。
两个原数据表如下:
数据表:access_log :
数据表:websites :
1.以下实现了 access_log 下 site_id 的 附属于websites的 id ,统计输出websites中 name 出现的次数并列出表格:
mysql> select websites.name,count(access_log.aid) as nums from access_log
-> left join websites
-> on access_log.site_id = websites.id
-> group by websites.name;
2.下面的 SQL 语句将返回所有网站及他们的访问量(没有的话输出null),date 输出最后访问的时间,并按访问量大小从多到少排列。
mysql> select websites.name,access_log.count,access_log.date
-> from websites
-> left join access_log
-> on websites.id = access_log.site_id
-> order by access_log.count DESC;