gpt4 book ai didi

mysql - 使用递归 MySQL 查询从父行到子行获取值

转载 作者:行者123 更新时间:2023-11-29 16:23:13 26 4
gpt4 key购买 nike

我希望父行中的值位于子行中,问题是所有内容都有多个级别。如果我展示给你看就更容易了。

这是我所拥有的: enter image description here

我想要这样的东西:

id | question_id | text
74 | 47 | Test answer
75 | 47 | Another answer
76 | 47 | Sub answer
77 | 47 | Sub sub answer

我想获取每个答案(行)的所有一级家长的列表。 id 77 的顶级父级是 75,75 的 Question_id 为 47,而这正是我所需要的。因为这样我就可以计算出 Question_id 47 的总答案。

我调查了一下,尝试了以下代码:

SELECT @pv:=id AS id, answered_at, parent 
FROM qa_answers
JOIN (SELECT @pv:=75) AS tmp
WHERE parent = @pv

但这仅返回 id 75,我想向我展示一切。关于如何实现这一目标有什么想法吗?我不是 SQL 专家。

最佳答案

希望对你有帮助。

表结构

CREATE TABLE IF NOT EXISTS `products_t` (
`id` int(11) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`parent_id` varchar(100) DEFAULT NULL,
`sub_id` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `products_t` (`id`, `name`, `parent_id`, `sub_id`) VALUES
(74, 'category15', '47', NULL),
(75, 'category16', '47', NULL),
(76, 'category19', NULL, '75'),
(77, 'category20', NULL, '76'),
(80, 'category80', NULL, '50'),
(81, 'category81', '50', NULL);

查询

select  id,
name,
IFNULL(parent_id,'47' ) as parent_id
from (select * from products_t
order by parent_id, id) products_sorted,
(select @pv := '47') initialisation
where (find_in_set(parent_id, @pv) or find_in_set(sub_id, @pv) )
and length(@pv := concat(@pv, ',', id))

这里,@pv := '47' 中指定的值应设置为您要选择其所有后代的父代的 id。

结果

id  name        parent_id 
74 category15 47
75 category16 47
76 category19 47
77 category20 47

关于mysql - 使用递归 MySQL 查询从父行到子行获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54418933/

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