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