如何解决如何在SQL中从同一表中进行递归选择?
我有一张桌子,上面有
Table1:
ObjectName Field Type Link
Account Name String
Asset AccountId Guid Account
Asset Name String
Account BillingStreet String Details
Details FirstName String Order
Order OrderNo Integer
Order OrderItem String
主要参考点是资产。我的意思是,我可以从Table1中进行选择*,其中ObjectName ='Asset'。那将给我2行。 但是有一个到Asset的链接,即Account。 因此,如果上面的选择上有一个链接,则选择所有具有该名称的行
类似这样:
从Asset中选择*,如果“链接”列中有一个值,则选择所有具有“链接名称”的ObjectName的行,并继续进行直到没有更多内容为止。这样,当它选择订单时就可以完成
因为没有订单链接
如果我要从ObjectName ='Account'的表1中进行选择*,那么由于行中有一个链接,我需要选择Details行,而detail则有一个到Order的链接,而我需要选择Order,因为Order没有Linhk,就是这样
如何在sql中执行此复杂查询,不知道从哪里开始?
如何在sql中执行此复杂查询?
解决方法
您正在描述分层查询。跨数据库的语法略有不同(并非所有数据库都实现此功能),但是其思想是:
with recursive cte (objectname,field,type,link) as (
select t.* from table1 t where objectname = 'Asset'
union all
select t.*
from table1 t
inner join cte c on c.link = t.objectname
)
select * from cte
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。