1. 程式人生 > 其它 >mysql把同一條資料中的不同欄位 拼接成一個欄位返回

mysql把同一條資料中的不同欄位 拼接成一個欄位返回

技術標籤:mysqlsql資料庫

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

查詢結果: