1、sql语句的执行顺序规则:sql的语法顺序和执行顺序区别很大。
如:select * from table1 where group by name having count(name) > 1 order by name desc
from->where->group by->having->select->order by;
2、多表的执行顺序
select * from tableA left join tableB on(tableA.name=tableB.name) where tableB.name = '张三';
select * from tableA left join tableB on(tableA.name=tableB.name and tableB.name = '张三') ;
from->on->left join->where->select;
所有on多条件的,是on阶段就过滤数据即A表的字段即要和B表相同,而且B表的name='张三';
如果放到where后面去,on阶段只要求A和B表name相同即可,将得到的数据再去过滤;
3、group by
group by 多个字段如:group by a,b 表示某行同时有a和b字段的为一组,如果是group by b,a呢不会影响结果的值,但是会影响结果的顺序;
4、order by a,b = order by a asc, b asc 默认是升序,如果需要降序要写明order by a desc,b desc。order by a,b 表示先按照a字段排序,当a字段有相同的再按照b字段排序;