数据库>MySQL>单表内复杂查询

概述:

  • 重点介绍以下几个子句:limit,order by,like/not like,in,group by,having以及统计函数count(col),max(col),avg(col);

以下均以china数据库为例

一、limit和order by:

limit  x:从查询结果中取前 x 条记录:

举个栗子:

#取出前五的省市区
SELECT * FROM t_province LIMIT 5;
SELECT * FROM t_city LIMIT 5;
SELECT * FROM t_district LIMIT 5;

          



---------------------------------------------------------分割线--------------------------------------------------------

order by xxx asc/desc:   查询结果按xxx字段升序/降序排列

举个栗子:

#查询所有的省按名称升序排列:
SELECT * FROM t_province ORDER BY ProRemark DESC;
SELECT * FROM t_province ORDER BY proname ASC LIMIT 7;

---------------------------------------------------------分割线----------------------------------------------------------

二、like/not like,in

like:where xxx like/not like %x/x%/%x%    查询条件是否符合%x/x%/%x%,%表示任意字符

举个栗子:

#查询所有带“南”的省;
SELECT * FROM t_province WHERE proName LIKE "%南省";

#查询所有不叫省的:
SELECT * FROM t_province WHERE proName NOT LIKE "%省";

             

---------------------------------------------------------分割线---------------------------------------------------------

in : where xxx in ('xxx','xxxx','xxxx','xxx')  查询条件为在('xxx','xxxx','xxxx','xxx')里面的

举个栗子:

#查询我国有没有申奥城市:
SELECT * FROM t_province WHERE proName IN ("巴黎","东京","伦敦","北京市","纽约");

---------------------------------------------------------分割线-------------------------------------------------------

三、count()、max( )、min()、avg()

统计函数:

count(xxx) 获得查询xxx的数量

max(xxx)获得查询xxx后最大的那条记录

min(xxx)获得查询xxx中最小的那条记录

avg(xxx)获得查询xxx的平均值

举个栗子:

#count(),max(),min(),avg(),
#查询名字中带有“南”的各种记录:
SELECT COUNT(*) FROM t_province WHERE proName LIKE "%南%";  ---->4
SELECT MIN(proid) FROM t_province WHERE proName LIKE "%南%";---->16
SELECT MAX(proid) FROM t_province WHERE proName LIKE "%南%";---->30
SELECT AVG(proid) FROM t_province WHERE proName LIKE "%南%";---->21

---------------------------------------------------------分割线-----------------------------------------------------------------

四、group by ,  having

group by xxx  按xxx字段分组,分组是为了统计

举个栗子:

#按省份分组
#select proName from t_province where proid=(
SELECT proid,COUNT(cityid) AS num
FROM t_city 
GROUP BY proid
ORDER BY num DESC
LIMIT 10;

---------------------------------------------------------分割线--------------------------------------------------------

having xxx   对分组后的数据按xxx条件筛选

举个栗子:

#罗列有15个地级市的省份
SELECT proid,COUNT(cityid) AS num
FROM t_city
GROUP BY proid
HAVING num > 15
ORDER BY num DESC;



猜你喜欢

转载自blog.csdn.net/qq_42157981/article/details/80377034