gpt4 book ai didi

sql - 确定路径的子计数

转载 作者:行者123 更新时间:2023-11-29 14:02:19 26 4
gpt4 key购买 nike

我有一个表,其“路径”列有值,我想更新表的“child_count”列,以便获得以下输出。

 path   | child_count 
--------+-------------
| 5
/a | 3
/a/a | 0
/a/b | 1
/a/b/c | 0
/b | 0

我目前的解决方案——效率太低了——使用如下存储过程:

CREATE FUNCTION child_count() RETURNS VOID AS $$
DECLARE
parent VARCHAR;
BEGIN
FOR parent IN
SELECT path FROM my_table
LOOP
DECLARE
tokens VARCHAR[] := REGEXP_SPLIT_TO_ARRAY(parent, '/');
str VARCHAR := '';
BEGIN
FOR i IN 2..ARRAY_LENGTH(tokens, 1)
LOOP
UPDATE my_table
SET child_count = child_count + 1
WHERE path = str;
str := str || '/' || tokens[i];
END LOOP;
END;
END LOOP;
END;
$$ LANGUAGE plpgsql;

有人知道做同样事情的单个 UPDATE 语句吗?

最佳答案

也许像这样的东西可以解决问题:

UPDATE my_table a
SET child_count = SELECT count(path) FROM my_table b WHERE b.path LIKE a.path || '/%';

关于sql - 确定路径的子计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com