mysql高级查询

问题描述

现有这样的递归表(系统菜单表),表内容如下:怎样通过sql查询将父子归类,不要使用函数或存储过程。最终效果:表结构如下:CREATETABLE`sysmenu`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`menuName`varchar(100)NOTNULLDEFAULT''COMMENT'菜单名称',`parentId`bigint(20)NOTNULLDEFAULT'0'COMMENT'父级ID',`url`varchar(200)NOTNULLDEFAULT''COMMENT'菜单路径',`sort`tinyint(4)DEFAULTNULLDEFAULT'1',`status`tinyint(4)NOTNULLDEFAULT'1'COMMENT'状态,0:不可用,1:可用',`creator`varchar(50)NOTNULLDEFAULT''COMMENT'创建人',`createTime`timestampNOTNULLdefaultCURRENT_TIMESTAMPonupdateCURRENT_TIMESTAMPCOMMENT'创建时间',PRIMARYKEY(`id`),UNIQUEKEY`index_menu_id`(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;

解决方案

本帖最后由 ideatechinfo 于 2014-08-20 17:35:53 编辑
解决方案二:
mysql不支持嵌套语句,所以,最简单的办法还是在你程序里解决其实不会效率太低,循环一遍就行支持嵌套的免费数据库比如有postgresql再或者需要更改数据库的表结构,方法有几个,如果可以更改表结构再细说
解决方案三:
可以更改表结构,请大神赐教
解决方案四:
这里有一个,从TheNestedSetModel那部分看看就行了这个的缺点是写的时候消耗太大,会动一个动全身再或者还有个办法没上面那个那么有理论依据但用着也挺爽就是加个path列,里面是当前行的所有parents比如你的表path/0000001/0000003/0000004/0000001/0000005/0000006写的时候只需要将parent的path取出加上parent的id即可,读的时候orderby这个path
解决方案五:
不用存储过程或者临时表很难,毕竟mysql是开源的,不像Oracle这类直接支持prior伪列如果确实不想在数据库层面处理,程序里面读出来用递归函数取子节点
解决方案六:
不是很懂你想表达什么自连接可不可以解决你的问题呀?
解决方案七:
orderbyip+parentid这样行不行?
解决方案八:
如果采用Mybatis框架该如何配置这种一对多的关联???
解决方案九:
求一个java递归读取树状表的源码,来读取以上数据结构并生成json字符串,谢谢!
解决方案十:
不可以自连接?
解决方案十一:
当只有两级菜单时自连接是可以满足的,但是多级以后自连接好像就满足不了树形结构了
解决方案十二:
groupbyparentId

时间: 2024-10-30 12:14:19

mysql高级查询的相关文章

MySQL高级查询之与Group By集合使用介绍_Mysql

1 GROUP_CONCAT mysql> SELECT student_name,    ->     GROUP_CONCAT(test_score)    ->     FROM student    ->     GROUP BY student_name; Or: mysql> SELECT student_name,    ->     GROUP_CONCAT(DISTINCT test_score    ->               ORDER

oracle高级查询总结

             oracle与我们常用的sqlserver.mysql相比,有非常多的优势,它可以支持多个实例同时运行,功能非常强大,主要在传统行业的数据化业务中,比如:银行.金融这样的对可用性.健壮性.安全性.实时性要求极高的业务:零售.物流这样对海量数据存储分析要求很高的业务.此外,高新制造业如芯片厂也基本都离不开Oracle:电商也有很多使用者,如京东(正在投奔Oracle).阿里巴巴(计划去Oracle化).而且由于Oracle对复杂计算.统计分析的强大支持,在互联网数据分析.

《七周七数据库》一一2.3 第2天:高级查询、代码和规则

2.3 第2天:高级查询.代码和规则 七周七数据库昨天,我们看到了如何定义数据库表,然后插入数据,更新和删除行,以及读数据.今天我们将更深入探讨PostgreSQL查询数据的各种方法. 我们将看到如何对相似的值归类,在服务器端执行代码,并使用视图(view)和规则(rule)创建自定义接口.在这一天的最后,我们将利用PostgreSQL的一个扩展包翻转表头. 2.3.1 聚合函数 聚合查询按照一些共同的标准将多行的结果分组.它可以简单到统计一张表的行数,或计算某些数值列的平均值.它们是强大的SQ

用sed语法将pt-query-digest分析的mysql慢查询转换成html页面,简单转换但是看着方便多了

主要练习sed的部分高级语法和正则匹配,不过其实用perl语法更方便.主要sed语法如下 #处理pt-query工具分析后的mysql慢查询 #头部 尾部 #!/bin/bash echo "used: sh chsqltohtml.sh abc.log,it will create abc.html to the current path" SLOWLOG=$1 INDEXHTML=`echo $SLOWLOG|cut -d . -f 1`.html echo $SLOWLOG ec

mysql-求一个Mysql语句 查询出当前周的数据按照天分组

问题描述 求一个Mysql语句 查询出当前周的数据按照天分组 SELECT DATE_FORMAT(uploadTime_beg%Y-%m-%d"") as time SUM(field01) as sumStatus1 SUM(field02) as sumStatus2 SUM(field03) as sumStatus3 SUM(field04) as sumStatus4 SUM(field05) as sumStatus5 FROM health_realdata WHERE

mysql怎么查询10-20条的数据

问题描述 mysql怎么查询10-20条的数据 mysql怎么查询1-5条的数据?????????????????? 解决方案 select * from table limit 0, 5 select * from table limit 10, 20 解决方案二: 在select语句后面使用limit

PHP到MySQL数据查询过程概述

HP层到MySQL层 Php到sql组件层次如下图所示: ext/mysqli和ext/mysql 是客户端的扩展程序库(库函数) ,在客户端脚本层面的扩展库. Mysqli库是mysql库的扩展版本,扩展版本增加了列版定(Bind Column)绑定.PDO (PHP Data Object) 是另外一种面向数据对象的 扩展库.这些扩展库直接面向编程者,而它的底层实现是mysql连接引擎(如mysqlnd和libmysql )(参考 http://bbs.chinaunix.net/threa

mysql慢查询使用详解

  1 慢查询定义 指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句.慢查询日志就是记录这些sql的日志. 2 开启慢查询日志 找到mysql配置文件my.cnf.在mysqld的下面添加 代码如下: log-slow-queries = D:/MySQL/log/mysqld-slow-query.log #日志存在的位置.(注意权限的问题,可以不用设置,系统会给一个缺省的文件host_name-slow.log) long-query-time = 5

mysql随机查询的优化

mysql随机查询最常见的写法如下: 1 SELECT * FROM tablename ORDER BY RAND() LIMIT 1 php手册上如此解释: About selecting random rows from a MySQL table: SELECT * FROM tablename ORDER BY RAND() LIMIT 1 works for small tables, but once the tables grow larger than 300,000 reco