1. 程式人生 > 其它 >mysql concat的使用

mysql concat的使用

建立資料表並新增資料

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