sql顺序

关键:group by 中select只能出现group by 后面的属性与聚合函数的列

 

GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用

group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要)
例:
错误:select  model.title_id  ,model.menu_seq from sys_menu  as model group by model.title_id
正确:select  model.title_id from sys_menu  as model group by model.title_id
正确: select  model.title_id,model.menu_seq from sys_menu  as model group by model.title_id ,model.menu_seq
正确: select  model.title_id from sys_menu  as model group by model.title_id ,model.menu_seq 
GROUP BY 与order by
执行顺序(先GROUP后order )------GROUP BY--------》order by
并且order  by 属性必须在-GROUP BY中取值
 
当使用到GROUP BY分组时,可以把GROUP BY后面的属性就是一个新表,然后我们显示select  的属性与后面取的属性都要根椐GROUP BY里的数据进行取值
 
根椐以上分析就可以得出为什么order by 属性, 其中这个属性必须在group by属性中提取,因为先执行group by,而group by决定了显示的结果,然后order by 再根椐group by出来
的表进行排序,
 
 
 
 
select  Distinct(convert(datetime,Convert(char,model.lotteryTime,111),111)) as name from  game_draw_date as model 
 where model.status='6' group by  model.lotteryTime order by  name desc
 
 
select  distinct(convert(datetime,Convert(char, model.lotteryTime,111),111)) as name  from game_draw_date as model group by model.lotteryTime
 order by  name desc
 
 
select  Distinct(convert(datetime,Convert(char,model.lotteryTime,111),111)) as name from  game_draw_date as model
 where model.status='6' group by  model.lotteryTime order by  name desc
 
 
1.from子句用来组装不同数据源的数据
2,where子句用于基于指定条件的筛选
3.group by 子句用来将数据划分为多个分组
3.1:Distinct 对数据进行去重:注意Distinct 会改变结果集的的名称:所以要根椐
Distinct 后的结果集再进处理话要使用 as
如:
错:select  DISTINCT convert(datetime,Convert(char,modle.lotteryTime,111),111)  from game_draw_date as modle group by  modle.lotteryTime  order by   modle.lotteryTime me  desc
正确:
select  DISTINCT (convert(datetime,Convert(char,modle.lotteryTime,111),111)) as tiemKey  from game_draw_date as modle group by  modle.lotteryTime  order by   tiemKey   desc
4,使用聚集函数进行计算():聚合函数对一组值执行计算并返回单一的值:如果有分组则对每组进行统计,如果没有分组则全个结果集进行统计(可以理解成:分组后每一个组相当于一个结果集)
count():满足条件的记录数
max():最大值。如果是字符串则按拼音排序
min():
sum():只能对数值类型做计算
avg():

5.使用having子句对分组进行筛选
6.计算所有表达式
7.使用order by 对所有结果集进行排序

而你的top 和like 都是属于where语句里面的,所以何时执行,一目了然
 

posted on 2015-03-26 10:55  高达  阅读(157)  评论(0)    收藏  举报

导航