sql语句的执行顺序

来源:互联网 发布:织梦if标签 编辑:程序博客网 时间:2024/06/11 09:00
sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;

聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,

而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后,如果没有group by语句,其实整个结果集就是一个分组。

没有使用group by而直接使用having子句的例子是不太多见,但是这种例子也不是没有,比如当我们需要对“现有的”整个结果集进行“二次筛选”时,就会直接使用having子句了。例如:

查询一个Forum最新的Post的SQL为:

select p.* from Forum f left join Thread t on f.id = t.forumId left join Post p on t.id = p.threadId where f.id = 2 having max(p.creationTime);

原创粉丝点击