美文网首页
MySQL相关

MySQL相关

作者: 爱学习的代代 | 来源:发表于2018-09-30 19:57 被阅读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、联合查询

    • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
    • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
    • INNER JOIN: 只返回两个表中联结字段相等的行
      eg场景:

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

    jd.png

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

    qqvip.png

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

    result.png

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

    image.png

    相关文章

      网友评论

          本文标题:MySQL相关

          本文链接:https://www.haomeiwen.com/subject/zqywoftx.html