MySql数据查询

首先准备数据库 sr 表 ta和tb



1. (单表查询) 查询ta表 val<70且val>0  给重复数据去重 按id从小到大排序 如果id相同按val从大到小排序 且只要前三条数据

select distinct * from ta where (val<70 and val>0) order by id,val desc limit 3;

+----+-----+
| id | val |
+----+-----+
|  1 |  30 |
|  1 |  10 |
|  2 |  20 |

+----+-----+

where 里面可以随意添加 and 或者 or 可以任意嵌套添加挎号来改变优先级 也可以添加 如 and name like '%k' ,or name like'\%k'   \是转义符 注意limit必须要在排序之后 可以多个字段排序 可以在字段后面添加排序规则 如desc(降序)

2. (分组查询) select * from tb group by id;


可以看到,对于每组来说只能查出一条数据,(我用的是 mysql 5.5 innodb存储引擎)


既然每组只有一条数据,那我们可以统计每个id出现的次数。也可以用sum(val)统计价值之和


可以使用having子句 选出每组val之和大于80的数据


我们也可以任意添加排序规则已经limit限制数据,真是可以随便玩emmmmmm

但是顺序不能乱 where -> group by ->having ->order by ->limit 

当然也可以多字段排序 group by id,val

 3.(聚合函数) avg()求平均 count()列数 max()最大值 min()最小值 sum()求和

4.(链接查询)


简单的多表链接。


简单的自连接。

5.(子查询)


any 任意一个 , all 全部都要满足。


exists 判空 not exists 判非空


in 是判断左边的【每条】记录在右边是否能找到符合条件的。

6.(竖向合并结果集)


必须要保证结果集的列名完全对应,union 合并全部且去重 union all 是不去重。

猜你喜欢

转载自blog.csdn.net/ufo___/article/details/80290023