繁体   English   中英

如何使用 MySql 查询或 php 通过子 ID 获取第一父级?

[英]How To Get First Parent By Child ID With MySql Query Or php?

我有这张桌子:

ID 姓名 parent_id
1 麦克风 0
2 杰夫 0
3 账单 2
4 萨拉 1
5 山姆 4
6 5

我想通过发送 id 或 parent_id 找到第一个父母姓名,id:

例如:

如果我发送 6 个 id(shai),我想显示第一个名为 mike(id:1) 的父级,但我的查询只显示前一个父级,当我发送 6 个 id 时,它只显示 sam(id:5)。 如何通过 SQL 查询或 Php 代码找到第一父级?

这是我的代码:

SELECT child.id, child.name, child.parent_id, parent.name as ParentName FROM test child JOIN test parent ON child.parent_id = parent.id WHERE child.id=6;
 CREATE TABLE test (id INT, name VARCHAR(255), parent_id INT); INSERT INTO test VALUES (1, 'mike', 0), (2, 'jeff', 0), (3, 'bill', 2), (4, 'sara', 1), (5, 'sam', 4), (6, 'shai', 5); SELECT * FROM test;
ID 姓名 parent_id
1 麦克风 0
2 杰夫 0
3 账单 2
4 萨拉 1
5 山姆 4
6 5
 CREATE FUNCTION get_most_parent (id INT) RETURNS CHAR(255) BEGIN DECLARE parent_name VARCHAR(255); REPEAT SELECT name, parent_id INTO parent_name, id FROM test WHERE test.id = id; UNTIL NOT id END REPEAT; RETURN parent_name; END
 SELECT test.*, get_most_parent(id) TopParentName FROM test WHERE id IN (3, 6);
ID 姓名 parent_id 最高父名
3 账单 2 杰夫
6 5 麦克风

db<> 在这里摆弄

PS。 仅将此方法应用于单个用户或小用户集 - function 单独且独立地为每个 output 行执行整个迭代选择过程。 并避免数据循环!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM