mysql - 查询父/子层次结构的顺序

标签 mysql

我现在有一张 table :

enter image description here

我想不出一个查询可以实现我需要的“名称”列的顺序。

我需要它像这样:
广告->work_and_business->search_work->require_work->自由职业->运输->汽车->卡车->水->空气->...

所以,基本上我需要像 parent ->所有 child ,下一个 parent ->所有 child

有人可以帮忙吗?

编辑:表创建脚本:

CREATE TABLE categories ( 
  id int(11) NOT NULL AUTO_INCREMENT, 
  level int(11) NOT NULL DEFAULT '1', 
  parent_category_id int(11) NOT NULL DEFAULT '1', 
  name varchar(255) DEFAULT NULL, 
  PRIMARY KEY (id), 
  KEY FK_categories_categories (parent_category_id)
 ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8

Edit2:php 部分中的其他内容需要级别。在查询部分不需要

最佳答案

我尝试了您的示例数据,我认为这有效

SELECT distinct(ifnull(c1.name,c.name)) as name 
from categories c 
right JOIN categories c1 ON c.id=c1.parent_category_id 
order by c.parent_category_id;

关于mysql - 查询父/子层次结构的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31215151/

相关文章:

mysql - SQL - 多个多对多关系过滤 SELECT

javascript - 数据表到 div 还是其他?

mysql - MyISAM 表索引文件经常崩溃!

mysql - 在距离连接字符串开头 3 个字符处插入字符串

php代码按列名排序mysql查询表

php - post 方法不适用于 zend 框架中的表单装饰器

php - 如何将 LAST_INSERT_ID() 存储在数据库中作为另一个表中的外键

mysql - 我可以为我的社交网站中的每个用户创建每个表吗?

mysql - 将多个 .sql 表转储文件合并到一个文件中

php - 使用 Workbench 的 MySQL 缓存结果