mysql> select * from testdb;
+------+------+------+
| id | name | pid |
+------+------+------+
| 1 | a | 0 |
| 2 | a | 1 |
| 3 | b | 1 |
| 4 | b | 2 |
| 5 | c | 2 |
| 6 | c | 3 |
| 7 | c | 0 |
| 8 | d | 0 |
| 9 | e | 7 |
+------+------+------+
9 rows in set (0.00 sec)这样的表结构,如何查询出id = 1的记录机器子记录。
谢谢。
就是一个mysql递归查询的过程。
+------+------+------+
| id | name | pid |
+------+------+------+
| 1 | a | 0 |
| 2 | a | 1 |
| 3 | b | 1 |
| 4 | b | 2 |
| 5 | c | 2 |
| 6 | c | 3 |
| 7 | c | 0 |
| 8 | d | 0 |
| 9 | e | 7 |
+------+------+------+
9 rows in set (0.00 sec)这样的表结构,如何查询出id = 1的记录机器子记录。
谢谢。
就是一个mysql递归查询的过程。
解决方案 »
- 请教一个建表问题
- 如何使用C API将图片数据存入MYSQL,以及如何读出?
- 怎样在MySQL里保存二进制数据?
- 我的MYSQL装在D:\mysql下,做成启动服务,但起动不了。不知为什么?
- 好奇怪哦!
- 关于mysql中文件的存取
- 谁知道这个怎么解决 我搞了好几天了 急的蛋疼
- 怎么我创建不了trigger,5.6版
- w2k下mysql意外中断怎么办啊!
- Cannot add or update a child row: a foreign key constraint fails (`analysis_da
- postgresql 数据库能不能实现类似于select top 10这样的功能,我试不出来
- mysql导入数据库问题
-> id int primary key,
-> name varchar(10),
-> pid int
-> );
Query OK, 0 rows affected (0.17 sec)mysql>
mysql> insert into testdb values
-> (1 ,'a',0),
-> (2 ,'a',1),
-> (3 ,'b',1),
-> (4 ,'b',2),
-> (5 ,'c',2),
-> (6 ,'c',3),
-> (7 ,'c',0),
-> (8 ,'d',0),
-> (9 ,'e',7);
Query OK, 9 rows affected (0.06 sec)
Records: 9 Duplicates: 0 Warnings: 0mysql> set global log_bin_trust_function_creators=on ;
Query OK, 0 rows affected (0.00 sec)mysql> delimiter //
mysql>
mysql> CREATE FUNCTION getChildLst(rootId INT)
-> RETURNS VARCHAR(1000)
-> BEGIN
-> DECLARE sTemp VARCHAR(1000);
-> DECLARE sTempChd VARCHAR(1000);
->
-> SET sTemp = cast(rootId as CHAR);
-> SET sTempChd =sTemp;
->
-> WHILE sTempChd is not null DO
-> SELECT group_concat(id) INTO sTempChd FROM testdb where FIND_IN_SET(
id,sTempChd);
-> SET sTemp = concat(sTemp,',',sTempChd);
-> END WHILE;
-> RETURN sTemp;
->
-> END;
-> //
Query OK, 0 rows affected (0.06 sec)mysql>
mysql> delimiter ;mysql> select *
-> from testdb
-> where FIND_IN_SET(id,getChildLst(1));
+----+------+------+
| id | name | pid |
+----+------+------+
| 1 | a | 0 |
| 2 | a | 1 |
| 3 | b | 1 |
| 4 | b | 2 |
| 5 | c | 2 |
| 6 | c | 3 |
+----+------+------+
6 rows in set (0.01 sec)
看来mysql还是不如oracle提供的那个比较好用。