前言

本文记录作者刷力扣MySQL时遇到的一些没见过的函数。

本文纯属搬运,在此只是记录一下,如有侵权,请联系作者

1. rank排序函数

本部分转载自:


1.1 rank() over(业务逻辑)

作用:查出指定条件后的进行排名,条件相同排名相同,排名间断不连续。
说明:例如学生排名,使用这个函数,成绩相同的两名是并列,下一位同学空出所占的名次。即:1 1 3 4 5 5 7

1
select id, name, score, rank() over(order by score desc) 'rank' from student

1.2 dense_rank() over(业务逻辑)

作用:查出指定条件后的进行排名,条件相同排名相同,排名间断不连续。 说明:例如学生排名,使用这个函数,成绩相同的两名是并列,下一位同学空出所占的名次。即:1 1 3 4 5 5 7

1
select id, name, score, dense_rank() over(order by score desc) 'rank' from student

1.3 row_number() over(业务逻辑)

作用:查出指定条件后的进行排名,条件相同排名相同,排名间断不连续。 说明:例如学生排名,使用这个函数,成绩相同的两名是并列,下一位同学空出所占的名次。即:1 1 3 4 5 5 7

1
select id, name, score, row_number() over(order by score desc) 'rank' from student

2. 字符串拼接函数

本部分转载自:


2.1 concat(string1, string2, …)

作用:将多个字符串无缝拼接 说明:此方法在拼接的时候如果有一个值为NULL,则返回NULL

1
select concat("hello", "word") string

2.2 concat_ws(分隔符, string1, string2, …)

作用:将多个字符串带分隔符拼接 说明:此方法在拼接的时候如果有分隔符为NULL,则返回NUL;其他参数为NULL时正常拼接

1
select concat_ws(', ', "hello", "word") string

2.3 group_concat([distinct] 字段 order by 顺序 separator 分隔符)

作用:将字段按顺序带分隔符连接
说明:distinct(去重)

1
2
3
4
5
6
7
8
9
10
11
12
select
sell_date,
count(distinct product) num_sold,
group_concat(
distinct product
order by product
separator ','
) products
from
Activities
group by sell_date
order by sell_date

参考链接