group by 与 order by 的配合使用

        在做统计类测试时,经常幻想可以通过SQL去查询,在通过查询结果去验证程序。今天遇到一个问题:

需要查询所有班级的最后一条签到记录,当时思路如下:

1、所有班级的一条签到记录

    group by classid

2、取最后一条签到记录

    select max(createtime)


然后就写出来这种SQL:

selet a,b,max(createtime) from table_1 group by calssid;

结果就不用说了。。。。

以下为正确思路:

group  by 的原理是分组,分组的时候数据怎么取? 当然取的是该组的第一条。

那第一条是什么呢?

                ----  该组的第一行数据 

那我们是不是先排序,在分组就OK了?

答案是肯定的!

当时写的SQL:

SELECT 
  t.`classesid`,
  t.`classesname`,
  t.`subject`,
  t.`teachername`,
  t.`students`,
  t.`createtime` 
FROM
  (SELECT 
    * 
  FROM
    ec_timetable 
    WHERE  classesid IN 
  (SELECT 
    id 
  FROM
    ec_class_classes 
  WHERE school_id = ** 
    AND classes_files = '***' 
    AND expend_num = (classes_num * each_number)) 
  AND product_soure = 2 
  AND is_sign = 1 
  AND is_delete = 0
  ORDER BY createtime DESC) t 
GROUP BY t.classesid ;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值