mysql一次查詢,傳回多個統計結果
1.sum(if)
select
sum(if(status=1,1,0)) as s1_count,
sum(if(status=2,1,0)) as s2_count
from order;
2.count()
select
count(status=1 or null) as s1_count,
count(status=2 or null) as s2_count
1. 查詢的基本文法
select * from 表名;
• from關鍵字後面寫表名,表示資料來源于是這張表
• select後面寫表中的列名,如果是*表示在結果中顯示表中所有列
• 在select後面的列名部分,可以使用as為列起别名,這個别名出現在結果集中
• 如果要查詢多個列,之間使用逗号分隔
2. 某列消除重複行
• 在select後面列前使用distinct可以消除重複的行
select distinct gender from students;
條件-where
• 使用where子句對表中的資料篩選,結果為true的行會出現在結果集中
select * from 表名 where 條件;
1. 比較運算符
• 等于=
• 大于>
• 大于等于>=
• 小于<
• 小于等于<=
• 不等于!=或<>
查詢沒被删除的學生
select * from students where isDelete=0;
查詢被删除的學生
select * from students where isDelete=1;
2. 邏輯運算符--and,or,not
• and
• or
• not取反
select * from students where id<4 or not isdelete=1;
3. 模糊查詢--like
• like
• %表示任意多個任意字元
• _表示一個任意字元
查詢姓黃或叫靖的學生
select * from students where name like '黃%' or name like '_靖';
4. 範圍查詢--in, between..and
• in表示在一個非連續的範圍内
• 查詢編号是1或3或8的學生
select * from students where id in(1,3,8);
• between ... and ...表示在一個連續的範圍
查詢學生是3至8的學生
select * from students where id between 3 and 8;
5. 空判斷--is null,is not null
• 空判斷--is null,is not null
查詢沒有填寫位址的學生
select * from students where hometown is null;
6. 優先級
• 小括号,not,比較運算符,邏輯運算符
• and比or先運算,如果同時出現并希望先算or,需要結合()使用
聚合:聚合指的是把一列中出現的一系列的值形成單一值的運算。 比如說一列中各個值的和或平均值
函數 作用
count 計算表中的記錄(行數)
sun() 計算表中數值列的資料合計值
avg() 計算表中數值列的資料平均值
max() 求出表中任意列中資料的最大值
min() 求出表中任意列中資料的最小值
• count(*)表示計算總行數,括号中寫星與列名,結果是相同的
• 查詢學生總數
select count(*) from students;
• max(列)表示求此列的最大值
• 查詢女生的編号最大值
select max(id) from students where gender=0;
• min(列)表示求此列的最小值
• 查詢未删除的學生最小編号
select min(id) from students where isdelete=0;
• sum(列)表示求此列的和
• 查詢男生的編号之和
select sum(id) from students where gender=1;
• avg(列)表示求此列的平均值
• 查詢未删除女生的編号平均值
select avg(id) from students where isdelete=0 and gender=0;
分組
• 按照字段分組,表示此字段相同的資料會被放到一個組中
• 分組後,隻能查詢出相同的資料列,對于有差異的資料列無法出現在結果集中。
• 可以對分組後的資料進行統計,做聚合運算
1. 分組文法
• 文法:select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
查詢男女生總數
select gender as 性别,count(*) from students group by gender;
查詢删除和未删除的人數
select isdelete as 是否删除, count(*) from students group by isdelete;
2. 分組後的資料篩選
文法:select 列1,列2,聚合...from 表名group by 列1,列2,列3..having 列1,.聚合..
查詢男生總人數
select gender as 性别,count(*) from students group by gender having gender=1;
排序
• 為了友善檢視資料,可以對資料進行排序
1. 排序文法 select * from 表名 order by 列1 asc|desc,列2 asc|desc,...
•将行資料按照列1進行排序,如果某些行列1的值相同時,則按照列2排序,以此類推
•預設按照列值從小到大排列
•asc從小到大排列,即升序
•desc從大到小排序,即降序
查詢未删除男生學生資訊,按學号降序
select * from students where gender=1 and isdelete=0 order by id desc;
分頁文法
select * from 表名 limit start,count
• 從start開始,擷取count條資料
• start索引從0開始
select * from students limit 0,2;
limit (n-1)*m,m n代表第幾頁,m要差詢多少條資料
select * from students where isdelete=0 limit (n-1)*m,m