MySql 语言 group by 和LEFT JOIN 关键字语句使用

(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;

这里写图片描述

Logo

快速构建 Web 应用程序

更多推荐