我有一个mysql表,如下图所示。
现在我想查询这个表,以便我得到如下数据
如果没有父母,那么父母必须填充为" NONE"或空。我如何实现此查询?这甚至可能吗?我和我的朋友讨论了这件事,但仍然没有答案。任何帮助,将不胜感激。感谢
答案 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将帮助您获得该孩子的所有孩子和孩子。您需要创建分层查询。