非专业处理:Oracle->MySQL的Connect by迁移
这两天在弄一个系统迁移,以适应小平台的要求。数据库要从Oracle移植到Mysql。
比较了种种,包括数据类型、主键自增/序列、字符串函数之后,就剩下一个“层次递推查询”最难办。
具体是这样的:
Oracle的connect by语句能够很好的支持:
1、只根据id和parentId两个字段,便可以查找一个结点的所有子孙结点
2、只根据Id和parentId连个字段,便可以查找一个结点的根(表是一个森林,非树)
MYSQL对等的语句处理这样的功能。
示例的表结构(MySQL):
mysql> call selectNodePosterity(2);+----+----------+-------+-------+| id | parentId | name | path |+----+----------+-------+-------+| 2 | 1 | two | 2 || 4 | 2 | four | 2/4 || 8 | 4 | eight | 2/4/8 || 5 | 2 | five | 2/5 |+----+----------+-------+-------+4 rows in set (0.00 sec)Query OK, 0 rows affected, 2 warnings (0.02 sec)