标题: where、group by、ordre by他们的先后顺序 [打印本页] 作者: 寥若星辰 时间: 2012-12-24 18:15 标题: where、group by、ordre by他们的先后顺序 where、group by、ordre by他们的先后顺序怎么理解?作者: 王继光 时间: 2012-12-24 18:23
select ....
where......
group by.......
having........
order by ......
从上往下的顺序作者: 快乐之恋 时间: 2012-12-24 20:02
SELECT .... FROM .... WHERE .... GROUP BY .... ORDER BY ....
Group by按照某种条件进行分组,然后数条件相同的进行分组。
Order by+字段名 就是根据谁排序。后面+asc(升序)和desc(降序)。
聚合函数不应出现where字句中如果要出现就是用having,having放在group by之后,having是对分组信息的过滤
作者: 管冉 时间: 2012-12-24 20:25
一个SQL语句往往会产生多个临时视图,那么这些关键字的执行顺序就非常重要了,因为你必须了解这个关键字是在对应视图形成前的字段进行操作还是对形成的临时视图进行操作,这个问题在使用了别名的视图尤其重要。以上列举的关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数),然后通过Group By关键字后面指定的分组条件将筛选得到的视图进行分组,接着系统根据Having关键字后面指定的筛选条件,将分组视图后不满足条件的记录筛选掉,然后按照Order By语句对视图进行排序,这样最终的结果就产生了。在这四个关键字中,只有在Order By语句中才可以使用最终视图的列名,如: SELECT FruitName, ProductPlace, Price, ID AS IDE, Discount FROM T_TEST_FRUITINFO WHERE (ProductPlace = N'china') ORDER BY IDE 这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。作者: 谢辉林 时间: 2012-12-24 20:35 本帖最后由 laughing 于 2012-12-24 20:39 编辑
写的顺序:select ... from... where.... group by... having... order by..
执行顺序:from... where...group by... having.... select ... order by...
提示:在order by后面加上asc是升序加desc是降序
希望对你有帮助 作者: 李冠彬 时间: 2012-12-24 23:36
where 和 having不能同时存在,
Select
from
where
order by
或者select
from
group by
having 作者: 李冠彬 时间: 2012-12-24 23:41
修改了下:
where 和 having不能同时存在,group by 分组后,便没有where条件,换用having条件。
Select
from
where
order by
或者select
from
group by
having
order by 作者: 阮佳佳 时间: 2012-12-25 09:21
SELECT .... FROM .... WHERE .... GROUP BY .... ORDER BY ....
Group by按照某种条件进行分组,然后数条件相同的进行分组。
Order by+字段名 就是根据谁排序。后面+asc(升序)和desc(降序)。
聚合函数不应出现where字句中如果要出现就是用having,having放在group by之后,
having是对分组信息的过滤