public Page<WorkTask> pageNotFinishHBK(int pageNum, int pageSize, WorkTask wt){
		String select = "SELECT * ";
		String selectExcept = "FROM t_task WHERE status IN ('-1','0','1') ";
		List params = new ArrayList<Object>();
		if(null != wt){
			if(StrKit.notBlank(wt.getStr("handler"))){	//处理人
				//sb.append("AND id IN (SELECT task_id FROM t_task_assign WHERE user_id='")
				//selectExcept += " AND EXISTS(SELECT id FROM t_task_assign ta WHERE t_task.id=ta.task_id AND user_id=?) ";
				selectExcept+="AND ( SELECT GROUP_CONCAT(a.user_name) FROM (SELECT assign.task_id,inf.`USER_NAME` FROM t_task_assign assign,t_wlkj_user_inf inf WHERE assign.user_id=inf.id) a WHERE a.task_id=t_task.id) like ?";
				params.add("%"+wt.getStr("handler").trim()+"%");
			}
		}
		selectExcept+=" ORDER BY status ASC,create_time DESC";
		System.out.println("查询sql="+select+selectExcept);
		return paginate(pageNum, pageSize, select, selectExcept,params.toArray());

一、基本语法

GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])

二、使用例子

注意:group_concat函数不能和in一起使用,但通过find_in_set来实现in的效果

SELECT A.*, ( SELECT group_concat(B. NAME) FROM tableB B WHERE find_in_set(B.id, A.platId) ) AS  name FROM tableA A

三、GROUP_CONCAT(expr)默认分隔符是“,”,还可以通过separator来自定义分隔符

SELECT A.*, ( SELECT group_concat(B. NAME SEPARATOR ";") FROM tableB B WHERE find_in_set(B.id, A.platId) ) AS  name FROM tableA A

四、根据组的值来进行排序再连接成字符串,例如按id降序来排:

SELECT A.*, ( SELECT group_concat(B. NAME SEPARATOR ";" order by NAME desc) FROM tableB B WHERE find_in_set(B.id, A.platId) ) AS  name FROM tableA A