Oracle对树形数据的递归查询使用Connect子句,例如:
以下内容为程序代码:

不同数据库对树状数据递归查询支持SELECT ID, PARENTID, Level 
不同数据库对树状数据递归查询支持
FROM TREENODE 
不同数据库对树状数据递归查询支持Start 
With ID = 'A2' 
不同数据库对树状数据递归查询支持Connect 
By Prior ID = ParentId

在DB2和最新的MS SQL Server 2005中也支持递归查询。SQL Server 2005和DB 2语法是相似的。

如上的SQL在DB 2中应为:

不同数据库对树状数据递归查询支持WITH SUB_TABLE (ID, PARENTID, Level
不同数据库对树状数据递归查询支持
AS (
不同数据库对树状数据递归查询支持  
SELECT ID, PARENTID, 0 FROM TREENODE WHERE ID = 'A2' 
不同数据库对树状数据递归查询支持  
UNION ALL 
不同数据库对树状数据递归查询支持  
SELECT PRIOR_TAB.ID, PRIOR_TAB.PARENTID, KSQL_SUB_TABLE.Level + 1 
不同数据库对树状数据递归查询支持    
FROM (SELECT ID, PARENTID, Level FROM TREENODE) PRIOR_TAB, SUB_TABLE 
不同数据库对树状数据递归查询支持  
WHERE SUB_TABLE.ID = PRIOR_TAB.ParentId
不同数据库对树状数据递归查询支持)
不同数据库对树状数据递归查询支持
SELECT ID, PARENTID, Level FROM SUB_TABLE

 

DB2中递归查询使用起来,比Oracle的麻烦。Oracle中引入了Prior关键字,使得递归查询变得简单。

MS SQL Server在最新2005的版本中,终于支持递归查询了,相比起Oracle和DB2,落后了好多年哟!!

相关文章:

  • 2021-08-05
  • 2022-12-23
  • 2021-12-29
  • 2021-10-12
  • 2022-12-23
  • 2022-01-01
  • 2022-12-23
猜你喜欢
  • 2021-11-29
  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-09
相关资源
相似解决方案