Mysql中的group_concat跟find_in_set函数的详解

Mysql中的group_concat和find_in_set函数的详解

一.Mysql中的group_concat函数:

1.解释:
    当SQL语句中使用到....group by....的时候, 该函数能够将相同的行组合起来,或者将满足条件的数据结合起来,返回由指定分隔符链接的字符号串数据.

 

2.用法:

group_concat( [DISTINCT]  要连接的字段   [Order BY 排序字段 ASC/DESC]   [Separator '分隔符'] )

默认按照“,”来连接。

 

3.举例说明:

(1)将满足条件的数据用“;”连接显示,去掉重复的数据倒序排列:

SELECT GROUP_CONCAT(distinct  keyword_id  order by keyword_id  desc  separator ';') keywordInfo  FROM wechat_keyword WHERE keyword_up_code = '-1'

(2)分组查询将相同的行组合起来:

select id,group_concat(distinct  price order by price desc) info  from goods group by id;

 

二.find_in_set函数:

 

1.解释:

返回所给值在给定字符号串中的位置或者信息。

 

2.用法:
FIND_IN_SET(str,strlis

 

3. 举例说明:

(1)假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。

如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。从1开始!

SELECT FIND_IN_SET('b','a,b,c,d');------返回2

 

(2)注意:
select * from child_info where FIND_IN_SET(id,'1,2,3,4,5');
使用find_in_set函数一次返回多条记录

id 是一个表的字段 然后每条记录分别是id等于1,2,3,4,5的时候
有点类似in (集合)
select * from child_info where id in (1,2,3,4,5);