MySQL查询笔记

作者: littleblues | 来源:发表于2020-04-30 09:01 被阅读0次

    1.关于mysql实现排名
    mysql不能用rank()函数,比如:

    SELECT discrib,rank() FROM  report2 t order by discrib
    

    执行报错,无法直接用rank()函数

    但可以用rank()函数和开窗函数over()结合使用,可以成功查询:

    SELECT t.* ,rank()over( order by number) FROM  report2 t
    
    image.png

    另外可以用自定义变量方法实现rank()排名
    需要注意的是,自定义变量的衍生表,都必须有自己的别名,否则会报错

    SELECT t.*,@i:=@i+1 FROM  report2 t,(select @i:=1)  order by t.number
    

    报错:Every derived table must have its own alias(每一个衍生表必须有自己的别名)
    正确示范:

    SELECT t.*,@i:=@i+1 FROM  report2 t,(select @i:=1) s order by t.number
    
    image.png

    所谓衍生表,包含自定义变量组成的表,SQL查询组成的新表;如:

    select * from report2,(select number from report2)
    

    报错,后面(select number from report2)衍生表需要名别名。

    2.分组查询的几个用法
    group_concat(字段) concat用逗号拼接group中的所有该字段值
    group by + having count()/avg()...
    group by + with rollup 作用:在最后新增一行,来记录当前列里所有记录的总和,如下:

    image.png

    相关文章

      网友评论

        本文标题:MySQL查询笔记

        本文链接:https://www.haomeiwen.com/subject/avvowhtx.html