• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > SQL处理多级分类,查询结果呈树形结构

SQL处理多级分类,查询结果呈树形结构

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了多级分类等相关知识,希望本文的分享对您有所帮助

对于多级分类常规的处理方法,很多程序员可能是用程序先读取一级分类记录,然后通过一级分类循环读取下面的子分类

这样处理的弊端是:如果数据量大,子分类很多,达到4级以上,这方法处理极端占用数据库连接池
对性能影响很大。

如果用SQL下面的CTE递归处理的话,一次性就能把结果给查询出来,而且性能很不错
比用程序处理(数据量很大的情况),临时表性能更好,更方便
代码如下:
with area as(
select *,id px,cast(id as nvarchar(4000)) px2 from region where parentid=0
union all
select a.*,b.px,b.px2+ltrim(a.region_id) from region a join area b on a.parentid=b.id
)select * from area order by px,px2


可以查询出结果—-所有分类及相应分类下子分类
id title parentid
1 广东省 0
2 广州 1
3 白云区 2
4 深圳 1
5 湖南省 0
6 长沙 5
7 株洲 5
代码如下:
with area as(
select * from region where parentid=1
union all
select a.* from region a join area b on a.parentid=b.id
)select * from area

可以查询出结果—-指定分类及相应分类下子分类
id title parentid
1 广东省 0
2 广州 1
3 白云区 2


性能分析:
对于一个3500条地区记录的数据表,其中有省,市,县3级
查询用时要1秒,视觉上感觉有点点慢,但不影响
数据量不大的分类,使用绝对无压力
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-12-05MySQL创建用户、授权用户、撤销用户权限、更改用户密码、删除用户的实用技巧
  • 2018-12-05Access使用查询--1.2.用选择查询进行分组数据的计算
  • 2017-05-11Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份
  • 2017-05-11MySQL 数据库两台主机同步实战(linux)
  • 2018-12-05PHP访问MySQL查询超时处理的方法
  • 2017-05-11MySQL 随机查询数据与随机更新数据实现代码
  • 2018-12-05 Mysql存取session实例
  • 2018-12-05安装SQL2005提示 找不到任何SQL2005组件的问题解决方案
  • 2018-12-05对SQL查询方法精彩汇总
  • 2018-12-05Mysql Join的使用教程

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Mysql如何避免全表扫描的方法
    • mysql Out of memory (Needed 16777224 bytes)的错误解决
    • mysql子查询是什么?mysql数据库子查询实际使用示例
    • Mysql索引会失效的几种情况分析
    • 详解mysql列转行,合并字段的方法(图文)
    • sqlserver 统计sql语句大全收藏
    • MySQL UPDATE更新语句精解第1/4页
    • 如何使用MySQL Workbench?
    • MySQL数据库varchar的限制规则说明
    • Oracle 查看imp导出文件中字符集

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有