赞
踩
今天修改别人留下的bug,展示出来供自己参考,原因是我以前没接触过这两函数,我以前想实现这种功能就会把那串id拿到java代码中用split分割然后单独写sql出来
1、我第一次添加完预约发现没什么问题,注意看参与者和备注有几个
2、再次添加一个或多个就会出现问题,按理来说应该有两条数据,一条备注为“===”,一条为“-----”,下面这种情况是因为find_in_set匹配到一个就合并一个导致的
3、后来我的想法是将最后那个left jion放在inner jion后面,结果就出现了最开始我画图出现的那种情况
4、后来看着原来的sql沉思了一会儿,最后想到了分组合并多行
FIND_IN_SET(str,strlist)有两参数:
参数1[ str ]:要查询的字符串
参数2[ strlist ]:字段名参数要以”,”分隔(英文状态) ;例如11,22,33,44,55,66
注意:如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号。返回值的范围在 1 到 N 之间
案例1: 结果为2,因为 22 在strlist集合中放在第二个的位置。
案例2:结果为0,因为222不在strlist集合中。
功能:是将要连接的字段按照排序字段的顺序用分隔符连起来显示,默认分隔符是”,”
语法:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
参考例子:select id,group_concat(name) from aa group by id
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。