android客户端中Sql的递归查询

公司业务需要查询通讯录部门数据 就想到了递归查询了一下 sql也可以直接递归查询

第一个查询为定点成员,定点成员只是一个返回有效表的查询,用于递归的基础或定位点

第二个查询被称为递归成员,使该查询成为递归成员的是对递归引用时触发(递归表.id与该表的pid

递归查询没有显式的递归终止条件,只有当第二个递归查询返回空结果

with as在mysql不支持,在with as在SqlServer和anroid客户端都可以使用的

union all,解释为联合所有。

Union解释为联合。

union或者Union all实现把前后两个select集合的数据联合起来,组成一个结果集查询输出。这就要求联合前后的结果集,需要分别有相同的输出字段的数目,并且对应的字段类型要相同。

SELECT column1, column2 from table1 union (all) select column1, column2 from table2

以上语句要求量表的column1字段类型相同,column2类型相同。而且每个查询的数目都是一样的。UNION ALL和UNION的差别就在ALL上面,第一个叫联合所有,说明会显示前后两个查询所有的数据,而UNION没有ALL(所有)这个单词,实现将前后两个查询的数据联合到一起后,去掉重复的数据显示

创建表和初始数据的sql

CREATE TABLE [aaa](

[id] [int] NULL,

[pid] [int] NULL,

[name] [nchar](10)

)

INSERT INTO aaa VALUES(1,0,'a')

INSERT INTO aaa VALUES(2,0,'b')

INSERT INTO aaa VALUES(3,1,'c')

INSERT INTO aaa VALUES(4,1,'d')

INSERT INTO aaa VALUES(5,2,'e')

INSERT INTO aaa VALUES(6,3,'f')

INSERT INTO aaa VALUES(7,3,'g')

INSERT INTO aaa VALUES(8,4,'h')

with my1 as(select * from aaa where id = 8

union all select aaa.* from my1, aaa where my1.pid = aaa.id

     )

   select * from my1;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值