Sql查询按父ID选择[重复]

Posted

技术标签:

【中文标题】Sql查询按父ID选择[重复]【英文标题】:Sql query select by parent id [duplicate] 【发布时间】:2021-11-22 00:50:03 【问题描述】:

我需要从这样的表中选择数据(只是示例)。

我想选择像 Category1,Category2,Category3 这样的格式的数据,没有 parent_id 的根

id_category name parent_id
1 root 1
2 Graphic card 1
3 Memory 1
4 DDR3 3
5 Corsair 4
6 HyperX 4

结果应该是

category1 category2 category3
GraphicCard null null
Memory DDR3 Corsair
Memory DDR3 HyperX

【问题讨论】:

您可以在 mysql 中使用 CTE(公用表表达式):dev.mysql.com/doc/refman/8.0/en/with.html 查看 Hierarchical Data Traversal,如果您在 SELECT 方面需要进一步帮助,请留下评论,我会在这里为您提供帮助。 【参考方案1】:

这种行为可以使用自连接来实现。 这应该可以解决问题:

select a.name as category1, b.name as category2, c.name as category3 
from yourtable a
left join yourtable b on a.id_category = b.parent_id
left join yourtable c on b.id_category = c.parent_id
where a.id_category in (2,3);

【讨论】:

以上是关于Sql查询按父ID选择[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询返回从数组中选择作者的数据[重复]

sql 怎么查询不重复数据

SQL 查询有效地选择不完美的重复项

sql查询去掉重复记录

sql查询字段中所有等于某些值的数据

用于从具有复杂结构的表中选择数据的 sql 查询