摆脱lev1中的所有lev2元素

时间:2016-06-21 01:35:53

标签: mysql sql

我有一个如下所示的mysql表(cat_with_desc),它包含类别和父类别。

例如:笔记本电脑的父母(4)是计算机(1)

enter image description here

通过使用该表,我设法显示所有分层数据,如下所示。

SELECT 
CONCAT_WS('-',t1.id,t1.name) AS lev1,
CONCAT_WS('-',t2.id,t2.name) AS lev2,
CONCAT_WS('-',t3.id,t3.name) AS lev3
FROM cat_with_desc AS t1
LEFT JOIN cat_with_desc AS t2 ON t2.parent_cat_id = t1.id
LEFT JOIN cat_with_desc AS t3 ON t3.parent_cat_id = t2.id;

enter image description here

但我不需要lev1中的lev2和lev3数据以及lev2列的lev3数据。 EX:4-Laptop,5-Desktop和6-Touch Screen不需要在lev1列中。

这是我需要得到的最终结果。

enter image description here

任何建议都会很明显。谢谢。 (不要建议我在这里使用LIMIT。:D)

1 个答案:

答案 0 :(得分:1)

只需使用parent_id进行过滤:

SELECT CONCAT_WS('-', t1.id, t1.name) AS lev1,
       CONCAT_WS('-', t2.id, t2.name) AS lev2,
       CONCAT_WS('-', t3.id, t3.name) AS lev3
FROM cat_with_desc t1 LEFT JOIN
     cat_with_desc t2 
     ON t2.parent_cat_id = t1.id LEFT JOIN
     cat_with_desc t3
     ON t3.parent_cat_id = t2.id
WHERE t1.parent_cat_id = 0;