我有一个名为“category”的mysql表。基本结构如下所示 -
------ -------- ------
cat_id cat_name parent
------ -------- ------
1 test1 NULL
2 test2 NULL
3 test3 2
4 test4 1
5 test5 3
现在我希望在单个查询中包含父类别名称(不仅是id)的所有类别数据。那可能吗?我可以通过在while循环中使用第二个查询(获取子的父名称)并将数据整体合并来实现。但是可以用一个查询来做到这一点吗?
答案 0 :(得分:6)
自行加入表格,使用parent
列链接到父级的cat_id。
SELECT c1.cat_id as childID, c1.cat_name ChildName, c2.cat_name as ParentName
from category c1
LEFT OUTER JOIN category c2
ON c1.parent = c2.cat_id
NULL
),因此我放置了LEFT
OUTER JOIN
,以便显示这些行。如果你不想要
,使用JOIN
代替LEFT OUTER JOIN
。NULL
。COALESCE
WHERE c2.cat_name = 'test2'
答案 1 :(得分:0)
Select p.cat_id, p.cat_name, c.cat_id, c.cat_name, c.parent
From category Left Join category On p.cat_id = c.parent
Where p.cat_name = 'name'
答案 2 :(得分:0)
SELECT c1。category_name
AS类别,c2。 category_name
AS sub_category
FROM(
SELECT *
来自category
)AS c1
INNER JOIN(
SELECT *
来自category
)AS c2 ON c1。category_id
= c2。category_id