具有case条件的两列之间的MySQL连接

具有case条件的两列之间的MySQL连接,mysql,Mysql,我有一个包含数据的表,其中包含类别和子类别数据 那么什么是类别和子类别呢?类别是父类别,子类别是子类别。两个数据相似,只是有一个不同,子类别的父类别id是该类别的id 样本数据: 需要什么? 结果中的子类别名称应为类别名称+'-'+子类别名称 样本结果: 我是如何解决这个问题的? 我返回的MySQL查询仅用于提取具有以下名称的子类别: SELECT CONCAT(wcfc1.feed_category_name, '-', wcfc2

我有一个包含数据的表,其中包含类别和子类别数据

那么什么是类别和子类别呢?类别是父类别,子类别是子类别。两个数据相似,只是有一个不同,子类别的父类别id是该类别的id

样本数据:

需要什么?

结果中的子类别名称应为类别名称+'-'+子类别名称

样本结果:

我是如何解决这个问题的?

我返回的MySQL查询仅用于提取具有以下名称的子类别:

SELECT 
    CONCAT(wcfc1.feed_category_name,
            '-',
            wcfc2.feed_category_name) AS feed_category_name,
    wcfc2.feed_category_id,
    wcfc2.parent_id,
    wcfc2.category_type_id
FROM
    wc_feed_categories wcfc1
        JOIN
    wc_feed_categories wcfc2 ON wcfc1.feed_category_id = wcfc2.parent_id;
此查询仅显示:

我不知道如何编写一个查询,在一个查询中显示名称更改的类别和子类别。

而不是

    JOIN
wc_feed_categories wcfc2 ON wcfc1.feed_category_id = wcfc2.parent_id;
试一试

因此,您的查询将是:

SELECT 
    CASE 
       WHEN wcfc1.parent_id = 0 THEN wcfc1.feed_category_name
       ELSE
            CONCAT(wcfc2.feed_category_name,  -- parent category
               '-', 
               wcfc1.feed_category_name)      -- child category
       END AS feed_category_name,
    wcfc1.feed_category_id,
    wcfc1.parent_id
FROM
    wc_feed_categories wcfc1
        LEFT JOIN
    wc_feed_categories wcfc2 ON wcfc1.parent_id = wcfc2.feed_category_id;

它是有效的,我已经了解它是如何执行的。
SELECT 
    CASE 
       WHEN wcfc1.parent_id = 0 THEN wcfc1.feed_category_name
       ELSE
            CONCAT(wcfc2.feed_category_name,  -- parent category
               '-', 
               wcfc1.feed_category_name)      -- child category
       END AS feed_category_name,
    wcfc1.feed_category_id,
    wcfc1.parent_id
FROM
    wc_feed_categories wcfc1
        LEFT JOIN
    wc_feed_categories wcfc2 ON wcfc1.parent_id = wcfc2.feed_category_id;