首页 > 解决方案 > 如何创建 mysql dynamc 透视行到列

问题描述

我正在寻求解决以下问题:

SELECT DISTINCT
    _2_12_company.companyInitials,
    _2_05_comptype.typeInitials
FROM
    _2_12_company,
    _2_05_comptype,
    _2_19_companycomptype
WHERE
    _2_12_company.id = _2_19_companycomptype.companyID 
   AND _2_05_comptype.id = _2_19_companycomptype.typeID

这是结果

AMAZON  |  MICROSOFT
AMAZON  |  FACEBOOK
AMAZON  |  ALI EXPRESS

但我希望结果以动态方式如下所示

AMAZON  |  MICROSOFT/FACEBOOK/ALI EXPRESS

标签: javamysqldatabaseselectdistinct

解决方案


您似乎正在寻找聚合:

SELECT DISTINCT
    c.companyInitials,
    GROUP_CONCAT(t.typeInitials ORDER BY t.id SEPARATOR '/') typeInitials
FROM
    _2_12_company c
    INNER JOIN  _2_19_companycomptype ct 
        ON c.id = ct.companyID
    INNER JOIN _2_05_comptype t 
        ON t.id = ct.typeID
GROUP BY c.companyInitials

笔记:

  • 始终使用显式的标准连接(使用ON关键字)而不是老式的隐式连接;这是 25 年来的最佳实践

  • 表别名使查询更易于编写、读取和维护


推荐阅读