【问题标题】:How can i concatenate multiple MySQL rows into one field?如何将多个 MySQL 行连接到一个字段中?
【发布时间】:2018-06-04 07:10:18
【问题描述】:

使用MySQL,我可以执行以下操作:

SELECT c.id_category, c.id_category_type, c.label, c.id_parent
FROM category c
WHERE  c.id_category_type < 3 
ORDER BY c.id_category_type;

结果是:

id_category |id_category_type |label                 |id_parent |
------------|-----------------|----------------------|----------|
1           |1                |Demande d'information |-1        |
2           |1                |Réclamation           |-1        |
18          |1                |TEST                  |-1        |
3           |2                |Autre                 |1         |
4           |2                |Mairie                |1         |
5           |2                |Stationnement         |1         |
6           |2                |Autre                 |2         |
7           |2                |Familles              |2         |
19          |2                |TESTDOMAINE           |18        |

但我只想要concat 行,我有一个id_categoryid_parent

示例:

Autre-Demande d'information
Mairie-Demande d'information
Stationnement-Demande d'information
Autre-Réclamation
Familles-Réclamation
TESTDOMAINE-TEST

我在 MySQL Doc 上寻找了一个函数,但它看起来不像 CONCATCONCAT_WS 函数接受结果集,所以这里有人知道如何做吗?

【问题讨论】:

    标签: mysql sql concat


    【解决方案1】:

    测试一下:

    SELECT category.id_category, category.id_category_type, 
    CONCAT(category.label, '-', parents.label), category.id_parent  FROM category INNER JOIN
    (SELECT id_category AS id, label FROM category WHERE id_parent = -1) AS parents
    ON parents.id = category.id_parent WHERE  category.id_category_type < 3 
    ORDER BY category.id_category_type;
    

    您的数据混合了“父行”和“子行”:当寄存器的 id_parent = -1 时,我认为是父行,而 id_parent -1 是子行。

    您正在请求从“子行”和“父行”中加入“标签”列的结果列,然后它需要构建一个“父表”,这是通过以下方式实现的:

    (SELECT id_category AS id, label FROM category WHERE id_parent = -1) AS parent
    

    然后您可以像使用任何其他表一样使用“父”表并构建您的连接查询

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      相关资源
      最近更新 更多