– 创建表结构
DROP TABLE IF EXISTS
exe
;
CREATE TABLE
exe
(
id
int(3) NOT NULL,
type
int(3) default NULL,
name
varchar(10) default NULL,
other
int(3) default NULL,
text
int(255) default NULL,
PRIMARY KEY (
id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
– 插入测试数据
INSERT INTO
exe
VALUES (‘1’, ‘1’, ‘分拼’, ‘2’, ‘1’);
INSERT INTO
exe
VALUES (‘2’, ‘1’, ‘四维’, ‘3’, ‘2’);
INSERT INTO
exe
VALUES (‘3’, ‘2’, ‘总评’, ‘1’, ‘4’);
INSERT INTO
exe
VALUES (‘4’, ‘3’, ‘季度’, ‘5’, ‘3’);
– group_concat和group by的使用
– 默认逗号连接
select t.type,group_concat(t.name) “result” from exe t group by t.type;
– separator指定连接符
select t.type,group_concat(t.name separator ‘;’) “result” from exe t group by t.type;
– 排序连接
select t.type,group_concat(t.name order by t.other desc) “result” from exe t group by t.type;
select t.type,group_concat(t.name order by t.other) “result” from exe t group by t.type;
– 低版本mysql连接数字会返回BLOB大对象,需要用cast()转换成char类型
select t.type,group_concat(t.name) “name”,group_concat(t.other) “result” from exe t group by t.type;
select t.type,group_concat(t.name) “name”,group_concat(CAST(t.other AS char)) “result” from exe t group by t.type;
参考文章:
http://blog.163.com/lgh_2002/blog/static/44017526201111144316650/
http://blog.csdn.net/priestmoon/article/details/7677452
http://www.jb51.net/article/40179.htm
– 创建表结构DROP TABLE IF EXISTS exe; CREATE TABLE exe ( id int(3) NOT NULL, type int(3) default NULL, name varchar(10) default NULL, other int(3) default NULL, text int(255) default NULL,
MySQL
中
group
_concat函数,完整的语法如下: 代码如下:
group
_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
代码如下:select * from aa;
代码如下:+——+——+| id| name |+——+——+|1 | 10||1 | 20||1 | 20||2 | 20||3 | 200 ||3 | 500 |+——+——+6 rows in set (0.00 sec)
以id
分组
,把name字段的值打印在一
行
,逗号分隔(默认)
代码如下:select id
之前也分享过一种解决主从表(一对多)关系的分页方法,今天这种方法更为简单。
原理就是将从表以
group
_concat的方式进
行
分组
,再从service层进
行
切割处理。
下面直接记录一段sql
select
t1.id,contract_no,t1.contract_name,t1.begin_date,t1.end_date,t1.sign_date,
t1.contract_status,t1.first_party_name,t1.second_party
sql 不允许先过滤再联表
过滤on 后面 and过滤只能过滤副表和 max min
group
_concat
使用
一对多的情况没有
group
by就会出现重复数据1、#{}
解析为一个JDBC预编译语句(prepared statement)的参数标记符,把参数部分用占位符?代替。动态解析为:
select * from t_user where username = ? ;而传入的参数将会经过PreparedS
1. concat()功能:将多个字符串连接成一个字符串。语法:concat(str1, str2, ...)说明:返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。用法:(1)不设置分隔符
mysql
> select concat('001','小明','85') as result;
+-------------+
| result |
+-...
2、语法:concat(str1,str2…)
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
3、语法:concat(str1,seperator,str2,seperato,…)
返回结果欸连接参数产生的字符串并且有分隔符,如果有任何一个参数为null,则返回值为null
二 conca...
MySQL
中的
group
_concat函数是用来将多
行
数据
拼接
成一个字符串的函数。它的作用和concat函数比较类似,但是
group
_concat可以从多
行
数据中获取需要的字段值,并将其
拼接
成一个字符串返回。
group
_concat函数的语法结构如下:
SELECT
group
_concat(column_name) FROM table_name WHERE condition;
其中column_name是需要
拼接
的字段名,table_name是需要查询的表名,condition是查询条件。
使用
group
_concat函数可以方便地将符合条件的多
行
数据
拼接
成一个字符串,例如,在SELECT语句中可以
使用
group
_concat函数对某一字段进
行
拼接
,以便于显示聚合数据。
同时,
group
_concat函数还支持类似
group
by的功能,即根据指定字段对数据进
行
分组
,然后按照
分组
的结果进
行
拼接
操作。
需要注意的是,
group
_concat函数返回的
拼接
结果可能会存在长度限制。可以通过设置
group
_concat_max_len参数来调整
拼接
结果的最大长度。
总的来说,
group
_concat函数是一种非常实用的字符串
拼接
函数,在数据聚合和
分组
计算等场景下
使用
较为广泛。