mysql - 查询以获取子类别并知道子类别是否有自己的子类别

标签 mysql sql subquery hierarchical-data categories

我有一个包含以下列的 cat 表:

cat_id  | name            |   parent_id
1         cat1                1
2         subcat1             1
3         subcat1-subcat      2

此表有数千个类别,但这是一般结构。

当用户选择顶级类别时,我有一个查询来获取它的子类别:

SELECT * FROM cat WHERE parent = $id

我的问题是我需要知道这些子类别是否有自己的子类别。

我可以对结果进行循环并对返回的每个类别进行查询,但我希望有一种解决方案可以只使用一个查询,也许它需要一个子查询?

感谢您的帮助。

最佳答案

您可以使用子查询来检查是否有子节点:

select  *
,       case 
        when exists (select * from cat c2 where c2.parent_id = c1.cat_id) then 0
        else 1
        end as HasSubcategories
from    cat c1

关于mysql - 查询以获取子类别并知道子类别是否有自己的子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023240/

相关文章:

sql - 将带有属性的 XML 保存到 SQL Server 中的表

mysql - SQL 使用两个子查询

PHPmyadmin 中的 mysql #1064 错误

mysql - 返回对用户配置文件的最近访问。 Group-by-N 混淆

sql - POSTGRES 最小值/最小值

java - CSVJDBC - 解释聚合函数中的字符串而不是整数

sql - SQL中如何连接多个select语句

oracle - 在子查询 (Oracle) 中引用父查询列

javascript - 在php中使用ajax向mysql数据库中插入数据

使用 Subversion 进行 MySQL 版本控制