mysql 父子排序_mysql 父子结构排序
项目中常常会遇到父子结构显示的问题,不同的数据库有不同的写的方式,比方SqlServer中用with union 实现。而Mysql则没有这么方便的语句。
例如以下category表。食品有pizaa,buger,coffee。而pizza又分了加cheese几种,怎样将他们的父子结构表现出来呢?
CREATE TABLE category(
id INT(10),
parent_id INT(10),
name VARCHAR(50)
);
INSERT INTO category (id, parent_id, name) VALUES
(1, 0, 'pizza'), --node 1
(2, 0, 'burger'), --node 2
(3, 0, 'coffee'), --node 3
(4, 1, 'piperoni'), --node 1.1
(5, 1, 'cheese'), --node 1.2
(6, 1, 'vegetariana'), --node 1.3
(7, 5, 'extra cheese'); --node 1.2.1
stackoverflow上一个人给了一个非常好的解决方式:
1. 创建一个函数
delimiter ~
DROP FUNCTION getPriority~
CREATE FUNCTION getPriority (inID INT) RETURNS VARCHAR(255) DETERMINISTIC
begin
DECLARE gParentID INT DEFAULT 0;
DECLARE gPriority VARCHAR(255) DEFAULT '';
SET gPriority = inID;
SELECT parent_id INTO gParentID FROM category WHERE ID = inID;
WHILE gParentID > 0 DO /*0为根*/
SET gPriority = CONCAT(gParentID, '.', gPriority);
SELECT parent_id INTO gParentID FROM category WHERE ID = gParentID;
END WHILE;
RETURN gPriority;
end~
delimiter ;
2. 调用函数得到的便是排完序的结果
SELECT * FROM category ORDER BY getPriority(ID);
☆ getPriority 这个函数的限制条件是:全部数据追溯上去必须有唯一的祖先。从树结构来看。不能有多棵树。
来源:http://stackoverflow.com/questions/14890204/order-sql-tree-hierarchy
mysql 父子排序_mysql 父子结构排序相关推荐
- mysql自动排序_MySQL中的排序
文章正文: 在编写SQL 语句时常常会用到 order by 进行排序,那么排序过程是什么样的?为什么有些排序执行比较快,有些排序执行很慢?又该如何去优化? 索引排序 索引排序指的是在通过索引查询时就 ...
- mysql 父子结构排序_mysql 父子结构排序 | 学步园
项目中经常会遇到父子结构显示的问题,不同的数据库有不同的写的方式,比如SqlServer中用with union 实现,而Mysql则没有这么方便的语句. 如下category表,食品有pizaa,b ...
- mysql 回退查询_MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题...
Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...
- mysql默认字符集和排序_MySQL字符集和排序规则
MySQL在创建数据库是,需要设置数据库的字符集和排序规则,如图所示: 我觉得这里有必要解释下字符集和排序规则这两个概念. 字符集 说到字符集,需要先提下字符.字符集和字符编码这几个词的含义. 字符( ...
- mysql教程排序_MySQL中的排序函数field()实例详解
前言 我们在日常开发过程中,排序是经常用到的,有时候有这样的需求. 比如,需要在查询结果中根据某个字段的具体值来排序.如下面例子 上面是一张个人信息 表,假如我们想按照'seiki','iris',' ...
- mysql 拼音排序_MySQL按常规排序、自定义排序和按中文拼音字母排序的方法
MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3种比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 ...
- mysql按中文拼音字母排序_MySQL按常规排序、自定义排序和按中文拼音字母排序的方法...
MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3种比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 ...
- mysql 按相似度排序_mysql 单表排序,相同值排序
--学校类型数据 SELECT t.examid,'-' AS unitcode,t.schooltype,'-' ASclassname,t.bkrs,t.skrs,t.avgs,SUM(IF(t. ...
- mysql树形遍历_mysql树形结构遍历
课题:如何利用mysql遍历树形结构(获取一个节点的所有子节点/父节点) 方案:自定义mysql函数 树形表结构: CREATE TABLE `tbl_tree` ( `id` bigint(20) ...
- mysql 叶子节点_MySQL 树形结构 根据指定节点获取其所有叶子节点
背景说明 需求:MySQL树形结构, 根据指定的节点,获取其下属的所有叶子节点. 叶子节点:如果一个节点下不再有子节点,则为叶子节点. 问题分析 1.可以使用类似Java这种面向对象的语言,对节点集合 ...
最新文章
- linux mint输入法托盘,linux mint12安装ibus之后,语言栏不跟随光标和系统托盘输入法图标不能显示问题解决...
- 探索 MongoDB--转
- linux ssh 时间设置,Linux下设置SSH Server设置时间链接限制(示例代码)
- 免费在线生成工具大全
- bp matlab 训练参数,基于MATLABBP神经网络设计与训练.PDF
- IDEA+Java:Selenium+Maven+TestNG基本WebUI自动化测试环境搭建
- FloatingActionButton FAB 悬浮按钮
- 数中唯一只出现一次的数字
- python图片分析中央气象台降水_02_中央气象台
- 关于苹果ID用哪些邮箱注册比较好安全?
- mac上开启隐藏文件
- J9数字平台科普:Web3支柱:去中心化存储全面解析
- 首次使用阿帕奇下的ab测压工具测试程序
- 刀片服务器型号规格,刀片服务器是什么,刀片服务器规格统一好不好
- win10系统双屏显示
- spoolsv病毒的清除
- IDEA MAVEN 项目 打包文件到指定目录
- React-Native搭建Android平台(ZUCC智能终端与移动应用开发lab1)
- c++ vector 一部分_巴博斯制定奔驰C级(W204)全套改装方案,运动范er十足
- 华为电脑用鸿蒙系统了吗,华为的鸿蒙系统可以用在电脑上吗?