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

  • 相关阅读:
    [Err] 1055
    java -jar 时指定内存大小
    mysql判断是否存在数据库和表,进行删除和创建
    更新element-ui版本
    js 数组操作
    vue router 常用操作
    [algorithm] 汉诺塔问题
    【algorithm】 二分查找算法
    [algorithm] Dijkstra双栈算法表达式求值算法
    【hive】 hive 加载数据
  • 原文地址:https://www.cnblogs.com/sienbo/p/11398017.html
Copyright © 2020-2023  润新知