• 1
  • 2
  • 3
  • 4
  • 5
mssql数据库问题 首 页  »  帮助中心  »  数据库  »  mssql数据库问题
PostgreSQL的递归查询
发布日期:2016-4-22 21:4:5

  PostgreSQL的递归查询

   最近我在在Postgresql的使用过程中发现了一个很有意思的功能,就是对于类似于树状结构的结果,我们可以采取可以使用递归查询实现。(同样还有mssql)例如我的公司部门常用这种数据结构,我们设计表结构的时候,一般都是类似下面的SQL,其中parent_id为NULL时表示顶级节点,否则表示上级节点ID。参考代码已给出,如下所示:

  CREATE TABLE DEPARTMENT (

  ID INTEGER PRIMARY KEY,

  NAME VARCHAR(32),

  PARENT_ID INTEGER REFERENCES DEPARTMENT(ID)

  );1234512345

  下面我们造几条测试数据,参考代码已给出,如下所示:

  INSERT INTO DEPARTMENT(ID, NAME, PARENT_ID) VALUES(1, 'DEPARTMENT_1', NULL);

  INSERT INTO DEPARTMENT(ID, NAME, PARENT_ID) VALUES(11, 'DEPARTMENT_11', 1);

  INSERT INTO DEPARTMENT(ID, NAME, PARENT_ID) VALUES(12, 'DEPARTMENT_12', 1);

  INSERT INTO DEPARTMENT(ID, NAME, PARENT_ID) VALUES(111, 'DEPARTMENT_111', 11);

  INSERT INTO DEPARTMENT(ID, NAME, PARENT_ID) VALUES(121, 'DEPARTMENT_121', 12);

  INSERT INTO DEPARTMENT(ID, NAME, PARENT_ID) VALUES(122, 'DEPARTMENT_122', 12);123456123456

  其中

  •   - DEPARTMENT_1是顶级节点,它有两个子节点​DEPARTMENT_11和​DEPARTMENT_12。
  •   - DEPARTMENT_11节点又有一个子节点​DEPARTMENT_111。
  •   ​- DEPARTMENT_12节点有两个子节点​DEPARTMENT_121和​DEPARTMENT_122。​

  下面的图1图2是递归查询生成树状结构查询语句,参考代码已给出,如下所示:


 图1

  

 图2

  转载请以链接形式标明本文地址

      以后会更新一些mssql的文章,关注mssql的敬请期待。

  本文地址:http://blog.csdn.net/kongxx/article/details/47035491