记录一些MySql比较少见但是有奇效的用法。
IFNULL(@rownum:=@rownum+1, @rownum:=1): IFNULL函数,如果第一个表达式为NULL,则返回第二个表达式的值,否则返回第一个表达式的值。给session中定义一个变量有两种方式,set @rownum=0,或者如上IFNULL,但是IFNULL有一个问题下一次使用该session继续查询时,rownum不是从1开始,可以改成如下方式:select a.* , @rownum:=@rownum+1 from student a , (select @rownum:=0) order by student_id。
order by后面可以跟两个或者以上的字段,这样可以按多个字段分组,就可以显示一个分组中多个字段了。第一个排序字段是分组字段,因为同一分组字段名称都一样,它们会被聚合到一组,然后再按照第二字段排序。如 select * from student order by class_id desc, student_id desc.
求每个班级前N名学生:
select class_id, student_id, name, row_num from (
select class_i