mysql concat的使用
阿新 • • 發佈:2022-05-30
建立資料表並新增資料
CREATE TABLE goods ( id INT PRIMARY KEY auto_increment, goods_name VARCHAR ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '商品名稱' ) ENGINE = INNODB charset = utf8mb4 COMMENT = '商品表'; INSERT INTO `goods` (`id`, `goods_name`) VALUES (NULL, '燕麥'), (NULL, '牛奶'); CREATE TABLE goods_spec ( id INT PRIMARY KEY auto_increment, spec_name VARCHAR ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '規格名稱', goods_id INT NOT NULL DEFAULT '0' COMMENT '商品id' ) ENGINE = INNODB charset = utf8mb4 COMMENT = '規格表'; INSERT INTO `goods_spec` (`id`, `spec_name`, `goods_id`) VALUES (NULL, '500g', '1'), (NULL, '350g', '1'); INSERT INTO `goods_spec` (`id`, `spec_name`, `goods_id`) VALUES (NULL, '250ml/16包', '2'), (NULL, '125ml/24包', '2');
1.使用concat組合新資料
SELECT spec.id, goods.goods_name, spec.spec_name, concat( goods.goods_name,' ', spec.spec_name ) AS spec_title FROM goods_spec AS spec LEFT JOIN goods ON goods.id = spec.goods_id;
執行結果:
2.使用concat_ws組合資料,並指定資料間的分隔符號
SELECT spec.id, goods.goods_name, spec.spec_name, concat_ws('#', goods.goods_name, spec.spec_name ) AS spec_title FROM goods_spec AS spec LEFT JOIN goods ON goods.id = spec.goods_id;
執行結果:
3.使用group_concat對資料分組,並顯示每個分組的所有規格id資料,預設每個id之間用英文逗號分隔
SELECT goods_id, group_concat( id ) AS spec_id FROM goods_spec GROUP BY goods_id;
執行結果:
使用group_concat函式時,可以使用distinct可以去重,使用order by子句可以對資料排序,separator指定資料間分隔符
SELECT goods_id, group_concat( id ORDER BY id DESC SEPARATOR '#' ) AS spec_id FROM goods_spec GROUP BY goods_id;
執行結果:
【版權申明】未經博主同意,謝絕轉載!(請尊重原創,博主保留追究權) https://www.cnblogs.com/facetwitter/p/16325926.html