zoukankan      html  css  js  c++  java
  • SQL递归

    递归一般出现在树形结构中

    1:根据孩子节点查找所有父节点

    With T
    As
    (
    Select * From U_Companies TB Where CompanyID=80047
    Union All
    Select TB.* From U_Companies TB Inner Join T on TB.CompanyID=T.ParentID
    )
    Select * From T
    

      

    2:根据父亲查找所有子节点

    With T
    As
    (
    Select * From U_Companies TB Where CompanyID=80047
    Union All
    Select TB.* From U_Companies TB Inner Join T on TB.ParentID=T.CompanyID
    )
    Select * From T
    

    如果CompanyID多个

    declare @CompanyRange varchar(1000)=''
    set @CompanyRange='80084,80085'
    
    ;With T
    	As
    	(
    		SELECT TB.* FROM 
    		(
    			SELECT T1.* From 
    				U_Companies T1 
    				INNER JOIN 
    				(SELECT F1 AS CompanyID  FROM dbo.SplitStrToTable(@CompanyRange,',')) T2
    			ON T1.CompanyID=T2.CompanyID
    		) TB
    	Union All
    	Select TB.*
    	From U_Companies TB Inner Join T on TB.ParentID=T.CompanyID
    	)
    	Select * From T ORDER BY CompanyID;
    

      

    SplitStrToTable函数代码:
    ALTER   function   [dbo].[SplitStrToTable]
    (
        @SourceSql   VARCHAR(8000),
        @StrSeprate   VARCHAR(100))
        RETURNS   @temp   TABLE(F1   VARCHAR(100)
    )   
    AS     
    BEGIN   
      DECLARE   @ch  AS   VARCHAR(100)   
      SET   @SourceSql=@SourceSql+@StrSeprate     
      WHILE(@SourceSql<>'')   
      BEGIN   
    		SET   @ch=left(@SourceSql,CHARINDEX(',',@SourceSql,1)-1)   
    		INSERT   @temp   VALUES(@ch)   
    		SET   @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')   
      END   
      RETURN   
    END
    

      

     

  • 相关阅读:
    小米智能家居接入智能家居平台homeassistant的方法
    我的nodejs 快速入门
    node.js JS对象和JSON字符串之间的转换
    Mac安装搭建sublimeText3开发Nodejs环境
    使用Xcode IDE写node.js
    nodejs中exports与module.exports的区别
    安装pysqlite2
    linux 终端分屏命令
    MQTT学习笔记
    Cache缓存
  • 原文地址:https://www.cnblogs.com/volts0302/p/5274577.html
Copyright © 2011-2022 走看看