在MySQL中,递归查询可以使用WITH RECURSIVE语法进行。下面是一个演示如何使用这个语法查询所有名称的示例:
WITH RECURSIVE all_names(id, name) AS ( SELECT id, name FROM table WHERE parent_id IS NULL UNION ALL SELECT table.id, table.name FROM table JOIN all_names ON table.parent_id = all_names.id ) SELECT name FROM all_names;
以上代码中,大家首先声明一个名为all_names
的递归查询。在这个查询中,大家使用SELECT
语句获取所有parent_id
为NULL
的记录的id
和name
。接下来,大家使用UNION ALL
运算符将这些记录与table
表中parent_id
等于all_names
中id
的记录进行连接。最后,大家从all_names
查询中选取所有的name
。
这个查询将返回所有的名称,包括树形结构中的所有分支和子分支。如果您需要自定义查询条件,可以根据需要修改WHERE
子句和SELECT
语句。
总之,使用递归查询来查询所有名称是一个非常常见的任务,使用MySQL的WITH RECURSIVE
语法可以轻松地完成这项任务。