1. 把同一条数据中的不同字段 拼接成一个字段返回(记录条数不变),用CONCAT
sql语句结构:
SELECT CONCAT(【要拼接的的字段】,".", 【要拼接的的字段】) as alias
FROM 【数据表】
用版本号查询实例说明,例子中版本号表有两个:
《设备版本主表》
CREATE TABLE `devices_version` (
`id` varchar(32) NOT NULL COMMENT '主键',
`version_no` varchar(50) DEFAULT NULL COMMENT '主版本号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备版本主表'
《设备版本子表》
CREATE TABLE `devices_version_sub` (
`id` varchar(32) NOT NULL COMMENT '主键',
`devices_version_id` varchar(32) DEFAULT NULL COMMENT '版本主表id',
`version_no` varchar(64) DEFAULT NULL COMMENT '子版本号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备版本子表'
需求是关联查询《设备版本主表》和《设备版本子表》,直接用sql把所有的版本号都查出来,不需要再通过程序把“主版本号”和“子版本号”拼接起来:
SELECT
CONCAT(c.version_no,".",c.version_no_sub) AS version_no
FROM
(
SELECT a.`version_no`, b.`version_no` AS version_no_sub
FROM devices_version a , devices_version_sub b
WHERE a.`id` = b.`devices_version_id` AND a.`status` = '0'
ORDER BY a.`version_no`+0 , b.`version_no`+0
) c
查询结果:
2. 把同一条数据中的不同字段,拼接成一个字段返回(记录合并为一条,默认用逗号分隔),用GROUP_CONCAT
sql语句结构:
SELECT GROUP_CONCAT(【要拼接的的字段】,".", 【要拼接的的字段】) as alias
FROM 【数据表】
举例:
SELECT
GROUP_CONCAT(c.version_no,".",c.version_no_sub) AS version_no
FROM
(
SELECT a.`version_no`, b.`version_no` AS version_no_sub
FROM devices_version a , devices_version_sub b
WHERE a.`id` = b.`devices_version_id` AND a.`status` = '0'
ORDER BY a.`version_no`+0 , b.`version_no`+0
) c
查询结果: