[英]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.