mysql把同一條資料中的不同欄位 拼接成一個欄位返回
阿新 • • 發佈:2021-02-02
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
查詢結果: