mysql语句执行顺序

from 确定你锁筛选的表 ----笛卡尔积
on 过滤掉不符合条件的
外连接 补充被on消除掉的某些数据 用null表示
where过滤
group by分组
having 过滤
select 选择出我们所要的内容
DISTINCT 增加唯一索引去除重复数据
ORDER BY 排序
LIMIT分页

注意的是 每一步都会在上一步的基础上生成一个临时表 再往下进行


(1) 通过on和 外连接 where的顺序可知道:
内连接 使用on和where效果一样 外连接情况下会对结果集产生影响
(2)三个过滤语句 根据执行时间的不同可分为 on where having
所以group by只能用having进行分组 (面试题)
且groupy by 必须放在order by 之前
(3)去重 各自有各自的用法:
distinct :必须放查询字段开头 且只过滤目标字段(类似唯一联合索引) 不会过滤null 一般用来查询不重复记录的条数-----但是count可以过滤null 所以一般一起使用
groupBy :可以达到distinct无法实现的效果
唯一联合索引 :需要用alter ignore来添加否则报错
GROUP_CONCAT:group by产生的同一个分组中的值连接起来,返回一个字符串结果 并且可以进行排序 设置分隔符

你可能感兴趣的:(java,后台,sql)