我有一个表,它有id
和parentId
列:我把这个结构称为邻接列表<所以,现在我想得到任意id的所有子项。这个问题的经典解决方案是使用递归,例如这里是Postgres过程或CTE实现。
我目前正在使用Spring Webflux和Spring Data R2DBC Postgres R2DBC驱动程序(它还不支持存储过程)<我如何以被动的方式处理这个问题?有没有可能,或者我遗漏了一些概念上的错误?
UPD 1:
+-------------+---------+
|id |parent_id|
+-------------+---------+
|root |NULL |
|id1 |root |
|dir1 |root |
|dir1_id1 |dir1 |
|dir1_dir1 |dir1 |
|dir1_dir1_id1|dir1_dir1|
+-------------+---------+
现在,我想在ReactiveCrudRepository中有一个方法,它将返回所提供id的所有子级。
例如,使用示例html" target="_blank">数据:通过提供id='dir1',我希望获得id为:['dir1\u id1',“dir1\u dir1”,“dir1\u dir1\u id1”的子级。
我认为最好的sql方法是递归CTE(公共表表达式),您尝试过吗?我从来没有试过多排。
WITH recursive nodes AS (
SELECT id, parent_id
FROM t
WHERE parent_id = 'dir1'
UNION ALL
SELECT t.id, t.parent_id
FROM nodes n
INNER JOIN t ON t.parent_id = n.id
)
SELECT id
FROM nodes;
parent\u id='dir1'的输出
使用proc或cte与完全扫描无关。
在您的案例场景中,您只需要使用递归cte,但在id、parentid上添加索引肯定会有所帮助
create index idx_name on tablename (parentid , id);
此外,10k行并没有那么大,索引肯定会大大提高cte。
问题内容: 获取Oracle中所有表的列表? 问题答案: 假设您有权访问DBA_TABLES数据字典视图。如果您没有这些特权但需要它们,则可以请求DBA显式授予您对该表的特权,或者请求DBA授予您该SELECT ANY DICTIONARY特权或SELECT_CATALOG_ROLE角色(这两者都将允许您查询任何数据字典表) )。当然,您可能希望排除某些模式,例如SYS和模式,SYSTEM而这些模
例如:如果数组是[9,8,7,6,5,4,3,1,2,2],它应该返回46(长度为7的子数组[9,8,7,6,5,4,3]和长度为2的子数组[2,2]之和)。不能组合[9,8,7,6,5,4,3]和[1,2,2],因为这将产生长度为10的非素数的连续子数组(幂等性)。 有谁能解释一下如何使用DP来解决这类问题吗?多谢了。
功能说明 通过接口查询管理员列表,返回管理员信息. 接口说明 请求header GET http://{your-domain}/v1/account/managers Authorization:Bearer {ACCESS TOKEN} Content-Type:application/json 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请将 {you
我得到以下exeption连接到Mssql服务器。 我在属性中使用相同的配置连接到JDBC,但在尝试连接到R2DBC时出现问题。在Rest时发生,而不是在启动应用程序时发生。
我有一个FutureBuilder(很高兴加载)从Firebase获取我的DocumentSnapshot列表,但问题是如果我推送/弹出屏幕,它会一遍又一遍地重建它。为了解决这个问题,我最终将它放在了上,但我有一个问题,我有时无法从中获取所有文档。 我有一个按钮可以启用国家/地区筛选和禁用,每次按下它几乎都会立即显示我的文档,例如,我总共筛选了11个国家/地区,筛选了5个国家/地区,但有时我不会全