我有一个包含多行的表,其中一些行是另一行" s" children"。
表格如下:
id,name,parent,slug
示例数据:
1, Jack, NULL, jack
2, John, NULL, john
3, Mike, jack, mike
查询应该返回jack,因为它是迈克的父母。
所以我想将其他行中指定的行返回为" parents"。我是MySQL的新手,我不知道该怎么做。
不幸的是,我也没有对谷歌感到幸运,因为我不确定如何确切地询问。
谢谢!
答案 0 :(得分:1)
你需要这样的东西:
SELECT * FROM table_name AS t1 WHERE
(SELECT COUNT(*) FORM table_name AS t2 WHERE t2.parent = t1.name) > 0
OR
SELECT t1.* FROM table_name AS t1
LEFT JOIN table_name AS t2 ON t2.parent = t1.name
GROUP BY t1.id
答案 1 :(得分:1)
如果您想要包含子项的行:
select distinct p.*
from table p join
table c
on p.name = c.parent;
或者,类似地:
select p.*
from table p
where exists (select 1 from table c where c.parent = p.name);
注意:table
表示放在你的桌子上。
答案 2 :(得分:1)
select parent_person.*
from person
inner join person as parent_person on parent_person.name = person.parent