如果在另一行中指定了MySQL,则选择行

时间:2015-01-23 17:00:07

标签: php mysql sql database

我有一个包含多行的表,其中一些行是另一行" s" children"。

表格如下:

  

id,name,parent,slug

示例数据:

1, Jack, NULL, jack 
2, John, NULL, john 
3, Mike, jack, mike

查询应该返回jack,因为它是迈克的父母。

所以我想将其他行中指定的行返回为" parents"。我是MySQL的新手,我不知道该怎么做。

不幸的是,我也没有对谷歌感到幸运,因为我不确定如何确切地询问。

谢谢!

3 个答案:

答案 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