获取每个含子记录的父表对应的前两条子表记录
需求说明
获取每个存在子记录的父表条目对应的前两条子表记录
示例数据
父表
- John
- Ketty
- James
子表
| Child | Parent |
|---|---|
| Maria | John |
| Donald | John |
| Rice | James |
| Evan | John |
解决方案
使用窗口函数ROW_NUMBER()即可实现该需求,通过按父表字段分组给子记录编号,再筛选编号≤2的记录,同时关联父表确保仅保留存在子记录的父条目。
SQL 示例代码
SELECT c.Child, c.Parent FROM ( SELECT Child, Parent, ROW_NUMBER() OVER (PARTITION BY Parent ORDER BY Child) AS row_num FROM 子表 ) c JOIN 父表 p ON c.Parent = p.ParentName -- 此处假设父表存储父名称的字段为ParentName WHERE c.row_num <= 2;
执行结果
返回每个有子记录的父条目对应的前两条子记录(排序规则可通过ORDER BY字段调整,示例按Child字段排序):
| Child | Parent |
|---|---|
| Donald | John |
| Maria | John |
| Rice | James |
内容的提问来源于stack exchange,提问作者Harry Poter
相关产品推荐
相关产品推荐

