首先准备数据库 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 是不去重。