mysql - 如何获得至少有 1 个孩子的父母?
问题描述
我有如下类别表:
category_id name parent_id
1 category1 NULL
2 subcategory1 1
3 category2 NULL
4 subcategory2 1
5 subcategory4 NULL
6 subcategory3 1
7 subcategory8 NULL
8 subcategory9 5
9 subcategory5 6
10 subcategory10 6
11 subcategory13 6
12 subcategory6 4
13 subcategory7 4
14 subcategory12 4
15 subcategory17 4
16 subcategory10 4
17 subcategory19 4
我想获取所有至少有一个孩子的父母的数据,并获取所有孩子的数据,每个父母的前 2 行。
以下是我到目前为止所尝试的努力。
SELECT c.category_id, c1.name,
FROM categories c
LEFT JOIN categories c1 ON c1.category_id = c.category_id where count(c1.id) > 1
limit 2;
我的预期输出:
category_id parent_id name parent_name
2 1 subcategory1 category1
4 1 subcategory2 category1
8 5 subcategory9 subcategory4
9 6 subcategory5 subcategory3
10 6 subcategory10 subcategory3
12 4 subcategory6 subcategory2
13 4 subcategory7 subcategory2
解决方案
WITH MyRowSet
AS
(
SELECT NAME
,PARENT_ID
,ROW_NUMBER() OVER (PARTITION BY PARENT_ID ORDER BY PARENT_ID) AS RowNum
FROM categories
)
SELECT NAME,PARENT_ID FROM MyRowSet WHERE PARENT_ID IS NOT NULL AND RowNum <= 2
推荐阅读
- python - 如何使无效输入仅出现在数字输入中?以及如何将输入转换为列表并增加每个输入的计数?
- javascript - 如何将 jQuery 用于不断增长的 #of 选择器?
- client-certificates - Mule 4 Run Time Fabric 和容器上的 TLS Artefacts 过期提醒
- java - 尝试使用 jpackage 打包 javafx 程序时出错
- jquery - 如何在 React 应用程序的窗口中运行 jQuery 应用程序
- ios - 如何在 iOS 14.4+ 设备上触发系统诊断
- sql-server - SQL Server:一行中的案例返回值
- android - 如何在flutter中使用google calendar watch api方法?
- kotlin - Spring Cloud Stream Reactive - 处理消息异常
- sql - 为什么 Oracle 中的嵌套聚合函数需要 GROUP BY