美文网首页
postgresql with(CTE)查询

postgresql with(CTE)查询

作者: 清远_03d9 | 来源:发表于2020-01-06 17:28 被阅读0次

    WITH查询是PostgreSQL支持的高级SQL特性之一,这一特性常称为CTE(Common Table Expressions),WITH查询在复杂查询中定义一个辅助语句(可理解成在一个查询中定义的临时表),这一特性常用于复杂查询或递归查询应用场景。

    with a as (select * from wp_dkbasedatainfo where xzqdm ='650203' )
    select * from a ,b where a.tbflqk='实地伪变化'
    

    WITH查询的一个重要属性是RECURSIVE,使用RECURSIVE属性可以引用自己的输出,从而实现递归,一般用于层次结构或树状结构的应用场景。

    例如,存在一张包含如下数据的表:

    id name fatherid1 中国 02 辽宁 13 山东 14 沈阳 25 大连 26 济南 37 和平区 48 沈河区 4
    

    使用PostgreSQL的WITH查询检索ID为7以及以上的所有父节点,如下:

    WITH RECURSIVE r AS ( 
    SELECT * FROM test_area WHERE id = 7 UNION ALL SELECT test_area.* FROM test_area, r WHERE test_area.id = r.fatherid 
    ) 
    SELECT * FROM r ORDER BY id;
    

    查询结果如下:

    id | name | fatherid----+--------+---------- 1 | 中国 | 0 2 | 辽宁 | 1 4 | 沈阳 | 2 7 | 和平区 | 4(4 rows)
    

    相关文章

      网友评论

          本文标题:postgresql with(CTE)查询

          本文链接:https://www.haomeiwen.com/subject/bmdcactx.html