Mysql查询从同一个表中检索子数据和父数据

时间:2015-04-13 08:47:58

标签: mysql sql

我有一个mysql表,如下图所示。

enter image description here

现在我想查询这个表,以便我得到如下数据

enter image description here

如果没有父母,那么父母必须填充为" NONE"或空。我如何实现此查询?这甚至可能吗?我和我的朋友讨论了这件事,但仍然没有答案。任何帮助,将不胜感激。感谢

2 个答案:

答案 0 :(得分:2)

你必须使用LEFT JOIN连接你的表,它将返回左表中的所有行和第二个表中与连接条件匹配的行:

Select
  t1.ID,
  t1.Name,
  t2.Name AS Parent,
  t1.Remarks
From
  yourtable t1 LEFT JOIN yourtable t2
  ON t1.parent_id = t2.id

当没有匹配时,您也可以使用COALESCE(t2.name, 'NONE') AS Parent返回字符串NONE。

答案 1 :(得分:0)

在MS SQL Server中,您可以使用CTE (Common Table Expression) - 分层查询来检索子级和叶级子级。但是我的sql不支持CTE。

请参阅代表MySQL不支持CTE的this问题 This answer将帮助您获得该孩子的所有孩子和孩子。您需要创建分层查询。