MySQL单条数据多个字段拼接与多条数据单字段拼接
表数据
CREATE TABLE `test` (
`empno` smallint(6) NULL DEFAULT NULL,
`ename` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`job` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`mgr` smallint(6) NULL DEFAULT NULL,
`hiredate` date NULL DEFAULT NULL,
`sal` bigint(20) NULL DEFAULT NULL,
`comm` bigint(20) NULL DEFAULT NULL,
`deptno` smallint(6) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
INSERT INTO `test` VALUES (7499, 'ALLEN', 'SALEMAN', 7698, '2014-11-12', 16000, 300, 30);
INSERT INTO `test` VALUES (7499, 'ALLEN', 'SALEMAN', 7698, '2014-11-12', 16000, 300, 30);
INSERT INTO `test` VALUES (7654, 'MARTIN', 'SALEMAN', 7698, '2016-09-12', 12000, 1400, 30);
单条数据多个字段拼接使用concat
concat函数是用来拼接单条数据中的不同字段的
select concat(ename,job) nj from test where empno='7654';
查询结果为:
nj |
---|
MARTINSALEMAN |
如果想要用逗号隔开需要在字段中间添加逗号:
select concat(ename,',',job) nj from test where empno='7654';
查询结果为:
nj |
---|
MARTIN,SALEMAN |
注意:如果拼接的字段有值为空(null),则拼接结果为null
多条数据单字段拼接
group_concat函数是用来拼接单条数据中的不同字段的
select deptno, group_concat(ename) from test group by deptno;
查询结果为:
deptno | group_concat(ename) |
---|---|
30 | ALLEN,ALLEN,MARTIN |
将deptno为30的ename拼接成一个字段