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

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;

这里写图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值