mysql搜索结果去重_MYSQL查询执行顺序,查询结果进行分组group by/筛选having/去重distinct...

SQL查询

1、执行顺序

3、select ...聚合函数 from 表名

1、where ...

2、group by ...

4、having ...

5、order by ...

6、limit ...

2、group by

1、作用 :给查询结果进行分组

2、示例

1、查询表中一共有几个国家

2、计算每个国家的平均攻击力

select country,avg(gongji) from sanguo

group by country;

先分组 -> 再聚合 -> 再去重

蜀国

蜀国

蜀国   --> 120    --> 蜀国

魏国

魏国   --> 110    --> 魏国

吴国   --> 115    --> 吴国

3、查找所有国家中英雄数量最多的前2名的 国家名称和英雄数量

select country,count(id) as number from sanguo

group by country

order by number desc

limit 2;

3、注意

1、group by之后的字段名必须要为select之后的字段名

2、如果select之后的字段名和group by之后的字段不一致,则必须对该字段进行聚合处理(聚合函数)

3、having语句

1、作用

对查询的结果进行进一步筛选

2、示例

1、找出平均攻击力>105的国家的前2名,显示国家名和平均攻击力

select country,avg(gongji) as pjgj from sanguo

group by country

having pjgj>105

order by pjgj DESC

limit 2;

3、注意

1、having语句通常和group by语句联合使用,过滤由group by语句返回的记录集

2、where只能操作表中实际存在字段,having可操作由聚合函数生成的显示列

4、distinct

1、作用 :不显示字段重复值

2、示例

1、表中都有哪些国家

select distinct country from sanguo;

2、计算蜀国一共有多少个英雄

select count(distinct id) from sanguo

where country="蜀国";

3、注意

1、distinct和from之间所有字段都相同才会去重

2、distinct不能对任何字段做聚合处理

5、查询表记录时做数学运算

1、运算符

+  -  *  /  %

2、示例

1、查询时所有英雄攻击力翻倍

select id,name,gongji*2 as gj from sanguo;

## sudo apt-get install python3-pip

## sudo pip3 install pymysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值