问题是这样,有一张链表,2个字段,一个是id,一个是父id,我想写一个存储过程,生成一张临时表得出每个id,完整的上下级字符串路径。
例如:
A表
id id_parent
1 0
2 1
3 1
4 2
5 3
6 4
7 6
8 4通过查询希望得到数据效果如下:
id id_path
1 0\1
2 1\2
3 1\3
4 1\2\4
5 1\3\5
6 1\2\4\6
7 1\2\4\6\7
8 1\2\4\8
例如:
A表
id id_parent
1 0
2 1
3 1
4 2
5 3
6 4
7 6
8 4通过查询希望得到数据效果如下:
id id_path
1 0\1
2 1\2
3 1\3
4 1\2\4
5 1\3\5
6 1\2\4\6
7 1\2\4\6\7
8 1\2\4\8
解决方案 »
- mysql_cluster测试 请问如何进行1000亿的事务请求
- 提取ID数值问题!
- mysql 上百万数据库查询语句思路 需要2-3秒将数据展示在前台……
- navicat for mysql使用【连接】-》【常规】,设置了root和密码,远程连接iP地址。
- 求一条insert sql写法
- 版主ACMAIN_CHM来接分!
- 同一个数据库不同的两个网站的同步登陆问题?
- linux里面如何改变mysql的root用户的密码,默认的为空,还有,mysql好像还可以匿名访问,如何改了。
- mysql 如何创建这样一个函数
- 谁用过“深圳科鼎科技有限公司”的Apache+Mysql+Php4 for win32的安装程序
- 如何让mysql字符集支持utf8mb4
- MySQL 事务日志问题
MySQL中进行树状所有子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们...
Procedure execution failed
1436 - Thread stack overrun: 69048 bytes used of a 196608 byte stack, and 128000 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack.
我知道需要调整thread_stack的值,但是我找了很多资料,都没有找到该如何修改这个值。
曾经尝试了如下的做法
mysql> #thread_stack = 512K;
->
-> ;Query OK, 0 rows affected
感觉上应该是增大了该值,但是,重新运行过程,还是同样的错误,根本没有变化,十分不解,谁给我点提点啊,我这是今天第一次接触mysql啊,毫无经验啊。
该目录中只有如下几个ini文件:
my.ini
my-huge.ini
my-innodb-heavy-4G.ini
my-large.ini
my-medium.ini
my-small.ini
my-template.ini
在my-innodb-heavy-4G.ini和my-small.ini中我找到有thread_stack,我都将其设置成1024k,应该够大了。但是好像没有任何效果,重启mysql服务,运行过程还是报相同的错误,这是为什么呢?
给出你的 create table , insert into ,create procudure 等语句。
这是一个实现上下级的链表数据串的一个小需求,如果不用递归,我真想不出还怎么去实现。此时,我已经将个中所有环节出现的疑难问题一一解决。之前设置变量thread_stack值是在控制台设置的,但是应该是设置无效,我感觉是没有效果,也许这个参数不是可以在服务运行时,动态改变的。目前解决的办法是,修改ini文件,就是my.ini,这个文件默认是没有thread_stack这个变量的,我手动新增了这个变量,然后,重启服务,运行过程,完事大吉。网上说了一堆,怎么修改这个值的办法,没有一个是有效的,我了个去。之所以把这个写出来,是为了给再遇到这个问题的难友,一条路,毕竟,我也是冥思苦想好久,才搞定的,新手上路,不容易啊,都是程序员,你懂的。