一般Mysql常见函数记录

来源:这里教程网 时间:2026-03-01 15:39:36 作者:

1 group_concat

功能: 将group by产生的同一个分组中的值连接起来,返回一个字符串结果

语法: group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

tips:  []内为可选, 分隔符不默认是逗号 ,

应用场景: 常见一对多表结构关系,将根据一表方分组,查询对应多表某列数据,以规定的格式拼接成字符串

eg:

# 查询用户表所有信息SELECT * FROM `userinfo`12

image-20210221145356847

# 根据brand分组, 查询每个brand的title,并以逗号,拼接select brand ,GROUP_CONCAT(title) from `userinfo` GROUP BY brand;12

image-20210221145437843

# 根据brand分组, 查询每个brand的title,并以美元符号$拼接
select brand ,GROUP_CONCAT(title separator '$') from `userinfo` GROUP BY brand;12

image-20210221145541134

2 @i:=@i+1

Oracle中有一个伪列 rownum,在查询结果时生成一组递增的序列号,可以用于分页截断等作用.

Mysql中没有该伪列,可通过上述模拟生成一列自增序号.

功能: 在查询结果时生成一组递增的序列号

语法:  SELECT (@i:=@i+1) as rownum , 查询字段 FROM 查询表名 ,(select @i:=0) as a

tips:

  • (select @i:=0) 定义初始序号为0(可更换为其他如10,20,…),且必须起别名,别名无规定,不与查询表名相同即可.
  • (@i:=@i+1) 定义递增规则,每次递增为1(可更换为5,10,…)
    # 查询用户表所有信息SELECT * FROM `userinfo`12

    image-20210221145356847

    # 添加自增序列号 初始为0,每次递增1SELECT (@i:=@i+1) as rownum , u.* FROM `userinfo` u ,(select @i:=0) a12

    image-20210221151516913

    # 添加自增序列号 初始为10,每次递增5SELECT (@i:=@i+5) as rownum , u.* FROM `userinfo` u ,(select @i:=10)  a12

    image-20210221152437821

  • 相关推荐