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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM