老用oracle,时间长了,一时之间在mysql上进行操作,还真的不顺手,一些特殊属性还要去查找它的manual,比如分页查询limit 之类.
应用之中碰见一个关于组织机构的树形查询,本来用oracle的自身特性,一句SQL搞定了,但在mysql试了老半天都不成(也说自已是新手,一些东西写出来老出错),在网上查了大半天,也就那两个SQL,运行起来,mysql都死掉了....自已参考以前的在SQL server中写的语句,一个下午才把它搞出来,别小看了mysql,真用起来还不是那么容易的..
下面给出我用的数据表结构各数据 / 树形结构的存储过程实现 /树形结构的查询结果 都贴出来 ,如果你的项目中有应用,请参照修改.
1.数据表(org --组织机构表名)
- ----------------------------
-- Table structure for org
-- ----------------------------
DROP TABLE IF EXISTS `org`;
CREATE TABLE `org` (
`ORGID` decimal(10,0) DEFAULT NULL,
`CODE` varchar(20) DEFAULT NULL,
`NAME` varchar(50) DEFAULT NULL,
`ORGPID` decimal(10,0) DEFAULT NULL,
`TEL` varchar(20) DEFAULT NULL,
`FAX` varchar(20) DEFAULT NULL,
`ADDRESS` varchar(100) DEFAULT NULL,
`DES` text,
`PRINCIPAL` varchar(20) DEFAULT NULL,
`LDAPDN` varchar(200) DEFAULT NULL,
`FLAG` varchar(20) DEFAULT NULL,
`SORTINDEX` decimal(10,0) DEFAULT NULL,
`COMPANYFLAG` decimal(10,0) DEFAULT NULL,
UNIQUE KEY `PK_ORG` (`ORGID`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `org` VALUES ('8', null, '质量控制部', '1', null, null, null, null, null, 'ou=质量控制部,o=xxxxxx有限公司', null, '9', '0');
INSERT INTO `org` VALUES ('9', null, '财务管理部', '1', null, null, null, null, null, 'ou=财务管理部,o=xxxxxx有限公司', null, '3', '0');
INSERT INTO `org` VALUES ('14', null, '安全保卫部', '1', null, null, null, null, null, 'ou=安全保卫部,o=xxxxxx有限公司', null, '12', '0')