zoukankan      html  css  js  c++  java
  • MySQL分组与连表查询

    MySQL分组与连表查询

    2019-08-23

    1.MySQL分组

    按照某一个属性降数据进行分组,通过关键字:group by;通常分组会与聚合函数联合使用。

    聚合函数常用的有:min,max,sum,avg,count。

    比如统计男女生人数

    --性别表
    create table gendertable(
        id int auto_increment primary key,
        gender char(10)
    )engine=innodb default charset=utf8;
    
    insert into gendertable(gender) values("男"),("女");
    
    --人员表
    create table personnel(
        id int auto_increment primary key,
        name char(10),
        gender int not null,
        constraint fk_per_gend foreign key gender references gendertable(id)
        )engine=innodb default charset=utf8;
    
    select count(gender),max(id),gender from personnel group by gender;

    这里注意,对聚合函数的结果进行二次筛选的时候不能用where,而是使用having.

    如下是显示统计后,某个gender统计数量大于2的数据

    select count(gender),gender from personnel group by gender having count(gender)>2;

    查询一个表中总共有多少数据可以用下面方法:

    select count(1) from 表名;

    2.连表查询

    将两个或者多个表放在一起查询;

    表之间必须有关系映射;

    语法格式:关键词on后面加上表之间的映射关系

    select 要显示的列或内容 from 表1 left join 表2 on 表1,2之间的关系;

    left join会将其左边的表全显示。

    也可以实现多张表的连表,只要其中至少两张表之间有关联

    select 需显示内容 from 表1
    left join 表2 on 表之间关系
    left join 表3 on 表之间关系
    ···

    实例:

    --状态表
    create table status(
        id int not null auto_increment primary key,
        sta char(10) not null
        )engine=innodb default charset=utf8;
    
    insert into status(sta) values("兴奋"),("高兴"),("平静"),("低落");

    create table userinfo(
        id int not null auto_increment primary key,
        name char(10) not null,
        sta_id int not null,
        constraint fk_usr_sta foreign key (sta_id) references status(id)
        )engine=innodb default charset=utf8;
    insert into userinfo(name,sta_id) values("mok",3),("cag",1),("sohh",2),("kaly",4),("doom",3),("jugg",1),("tiger",4),("lion",4);

    #连表查询
    select name,sta from userinfo
    left join status on userinfo.sta_id=status.id;

  • 相关阅读:
    42. Trapping Rain Water
    223. Rectangle Area
    645. Set Mismatch
    541. Reverse String II
    675. Cut Off Trees for Golf Event
    安装 VsCode 插件安装以及配置
    向上取整 向下取整 四舍五入 产生100以内随机数
    JS 判断是否为数字 数字型特殊值
    移动端初始配置,兼容不同浏览器的渲染内核
    Flex移动布局中单行和双行布局的区别以及使用
  • 原文地址:https://www.cnblogs.com/sienbo/p/11398017.html
Copyright © 2011-2022 走看看