MySQL相关

2018-09-30  本文已影响14人  爱学习的代代

1、group by 根据某个字段进行分组,分组后使用having语句做筛选
-- 查询名下有多个有效合同的学生列表
select sid,count(*) as count from stu_contract where c_status = 4 group by sid having count > 1

2、Having与Where的区别
where 子句:分组前过滤数据,where条件中不能包含聚合函数(sum,count,avg,max,min)
having 子句:分组后过滤数据,条件中可包含聚合函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
3、联合查询

①、 一个表存储所有开通JD会员的用户信息 jdvip

jd.png

②、一个表存储所有的开通QQ会员的用户信息 qqvip

qqvip.png

③、查询所有开通会员的用户均可使使用左右联合查询与内查询

result.png

说明:
左查询就是说满足查询条件的前提下,即使右表数据为空,填充NULL ,从左表返回所有数据(18736775937开通了qqvip, 未开通jdvip)。
右查询就是说满足查询条件的前提下,即使左表数据为空,填充NULL ,从右表返回所有数据(13311907404开通了jdvip, 未开通qqvip)。
左右查询易于比较数据差异
内查询就是严格匹配连接字段。即俩表的交集(即开通jdvip又开通了qqvip的用户)

image.png
上一篇 下一篇

猜你喜欢

热点阅读