众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的。这个得益于Mysql允许在SQL语句内使用@变量。以下是示例代码。
CREATE TABLE `lf_ctrl_trade` (
`TRADEID` int , -- 节点ID
`nodename` varchar (60), -- 节点名称
`PARENTID` int -- 节点父ID
);
方案一:
SELECt TRADEID AS ID,PARENTID AS 父ID ,levels AS 父到子之间级数, paths 实力内敛型:这种男人已经不需要用黄金钻石来证明他的实力了,他戴的表可能一般人都不认识,也没机会认识。没关系,要的就是这种低调的精致,于细微处透出的深厚内力。这种男人应该是豁达的,对生活有着独特见解,当然了,他们年纪应该都不小了,看看他们身边的女人,会发现一个共同点,那就是:智慧。古有“闻香识人”,今有“看表识人”,懂得佩戴手表的有利于找到最适合自己的表款,为自己的魅力加分,所以,懂得戴手表的意义是相当重要的。 AS 父到子路径 FROM (
SELECt TRADEID,PARENTID,
@le:= IF (PARENTID = 0 ,0,
IF( LOCATE( CONCAt('|',PARENTID,':'),@pathlevel) > 0 ,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAt('|',PARENTID,':'),-1),'|',1) +1
,@le+1) ) levels
, @pathlevel:= CONCAt(@pathlevel,'|',TRADEID,':', @le ,'|') pathlevel
, @pathnodes:= IF( PARENTID =0,',0',
CONCAT_Ws(',',
IF( LOCATE( CONCAt('|',PARENTID,':'),@pathall) > 0 ,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAt('|',PARENTID,':'),-1),'|',1)
,@pathnodes ) ,PARENTID ) )paths
,@pathall:=CONCAt(@pathall,'|',TRADEID,':', @pathnodes ,'|') pathall
FROM lf_ctrl_trade,
(SELECt @le:=0,@pathlevel:='', @pathall:='',@pathnodes:='') vv
ORDER BY PARENTID,TRADEID
) src
ORDER BY TRADEID
方案二:
创建函数
DROP FUNCTION IF EXISTS queryChildrenTrade;
CREATE FUNCTION `queryChildrenTrade` (myid INT)
RETURNS VARCHAr(4000)
BEGIN
DECLARE sTemp VARCHAr(4000);
DECLARE sTempChd VARCHAr(4000);
SET sTemp = '$';
SET sTempChd = cast(myid as char);
WHILE sTempChd is not NULL DO
SET sTemp = CONCAt(sTemp,',',sTempChd);
SELECT group_concat(TRADEID) INTO sTempChd FROM lf_ctrl_trade where FIND_IN_SET(PARENTID,sTempChd)>0;
END WHILE;
return sTemp;
END;
如何查询:
select * from lf_ctrl_trade where FIND_IN_SET(TRADEID, queryChildrenTrade(3000))
如果擒纵调整机构本身的动作不准确,时计便随之失准。造成擒纵装置动作不准确的罪魁祸首是地心引 力。调速装置中的摆轮是利用游丝的弹性来完成摆轮运动的。由于游丝总是以一定方.向卷动,所以时计的放置位置姿势(上下左右的位置)变化时,这一部分所受到的重力作用也会使 轴承的摩擦力发生变化。于是便产生了一种称为“位置差”的精度误差。例如,将手表放置在平面上是,就和戴在手腕上经常摆动时不同,产生了或快或慢的差异。十七世纪末,人们对钟表精度的要求显著提高,再无法容忍这样的“位置差”。于是,宝玑便挖空心思,寻求解决的绝招。他想:擒纵装置之所以受重力的影响,是因为它的机件处于固定的运动状态,如果使这一部分的位置不断地改变,方位不同会导致绝大多数情形下抵消重力的作用。根据这一构思,宝玑想出了一个巧夺天工的办法。他把这个擒纵调速系统安装在一个框架(Carriage)中。