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