MySQL - 显示记录及其父项

标签 mysql sql database

<分区>

如何显示特定记录及其父项(最多两个)?

Table:
+---------------+
| id | parentID |
+---------------+
|  1 |     null |
|  2 |        1 |
|  3 |        1 |
|  4 |        2 |
|  5 |        2 |
|  6 |        2 |
+---------------+

The expected result:
Showing record with id 4 and his two parents

+---------------+
| id | parentID |
+---------------+
|  1 |     null |
|  2 |        1 |
|  4 |        2 |
+---------------+

我不知道怎么办。以下查询无效。

(SELECT `c1`.`parentID` FROM `table` as `c1` WHERE `c1`.`id` = 4 LIMIT 1) AS `c1parentID`,
(SELECT `c2`.`parentID` FROM `table` as `c2` WHERE `c2`.`id` = `c1parentID` LIMIT 1) AS `c2parentID`,
SELECT * FROM `table` as `c3` WHERE `c3`.`id` = `c1parentID` OR `c3`.`id` = `c2parentID` OR `c3`.`id` = 4

我对高级查询的了解很差。请帮助:)

最佳答案

您将需要 CURSOR 和 LOOP。您将从子节点一直循环到根节点(直到 parentId 为 NULL)。

http://www.mysqltutorial.org/mysql-cursor/

关于MySQL - 显示记录及其父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29866076/

相关文章:

php - MySQL - 将许多小查询转换为大查询

mysql - 从多个表中检索所有内容

c# - GridView 控件中的超链接

sql - 在 SQL Server 中创建连续的发票编号而无需竞争条件

php - mysql 触发器是否会为 select 语句产生额外的开销?

sql-server - Mssql 中 UNIQUE KEY 约束的重复空值违规

sql-server - MS 查询分析器/Management Studio 替代品?

mysql - 如何删除MySQL中最后一个之后的所有文本

php - 无法找到PHP为MySQL错误号定义

sql - 对同一个表进行多个子查询的 SELECT