SQL递归(高分,急).

SQL递归(高分,急).,第1张

这个估计PKId是ParentId的父节点吧

给你举个例子,就只用这两个字段吧,其他的也没多大用

PKId ParentId

1 0

2 0

3 1

4 2

5 1

假设数据是我上边这样的

可以假设每个PKId分别为商品大类,就把1的定义为软件吧,2定义为硬件,3为硬盘,4为ps软件,5为主板

这样的话,你就能看出对应关系了吧?

1和2是最高层的,所以无父节点,所以ParentId为0

3和5都是硬件,所以归属为1

4为软件,所以归属为2

这样的好处是减少多次读取其他表里的无用信息,在一定程度上可以提高效率,当然是指数据量大的时候,数据量小的时候基本没什么区别

作用你自己都说了,其实就是实现自我关联

但是这样有一点不好,在自身有主键外键,如果其中的逻辑关系弄的不太清楚的话,很容易出问题,简单来说就是这样了

select from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system select from all_users; 查看你能管理的所有用户! select from user_users; 查看当前用户信息 ! -- 查询你 当前用户下,有哪些表 SELECT FRO

在 SQL 中,你可以使用递归查询来实现递归函数。递归查询是一种查询,其中结果集由一条或多条 SELECT 语句和一条用于查找下一级行的 UNION ALL 语句组成。

例如,假设你有一张表,其中包含父子关系的信息(即,每个记录都有一个父级 ID,表示它的父级),你可以使用以下递归查询来查询每个记录的所有祖先:

WITH RECURSIVE ancestors AS (

-- 初始查询

SELECT id, parent_id

FROM your_table

WHERE id = :your_id

UNION ALL

-- 递归查询

SELECT tid, tparent_id

FROM your_table t

INNER JOIN ancestors a ON tid = aparent_id

)

SELECT id FROM ancestors;

在这个查询中,我们使用了一个递归关系,其中第一个 SELECT 语句是初始查询,用于查询给定 ID 的记录。第二个 SELECT 语句是递归查询,用于查询与当前记录的父级相关的记录。通过将这两个 SELECT 语句用 UNION ALL 连接起来,我们就可以获得所有祖先的列表了。

以上就是关于SQL递归(高分,急).全部的内容,包括:SQL递归(高分,急).、Oracle数据库用户每秒的递归调用数怎么查询、sql用什么方法可以实现递归函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9269368.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存