You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server:子表记录数匹配父表ChildrenCount的查询实现咨询

实现方案:纯SQL即可完成,无需存储过程

完全可以通过纯SQL语句实现该需求,不需要依赖存储过程。以下提供几种常用的实现方式:

方式1:分组统计后关联父表

通过子查询统计每个父ID对应的子表实际记录数,再与父表的ChildrenCount字段匹配:

SELECT p.*
FROM parent p
INNER JOIN (
    SELECT parent_id, COUNT(*) AS actual_child_count
    FROM child
    GROUP BY parent_id
) c ON p.id = c.parent_id
WHERE p.ChildrenCount = c.actual_child_count;

方式2:使用EXISTS子查询验证

利用EXISTS结合HAVING子句,直接验证当前父记录对应的子表数量是否匹配:

SELECT p.*
FROM parent p
WHERE EXISTS (
    SELECT 1
    FROM child c
    WHERE c.parent_id = p.id
    HAVING COUNT(*) = p.ChildrenCount
);

扩展:返回匹配条件的子表记录

如果需要同时返回符合条件的父表和子表记录,可以调整为:

SELECT p.*, c.*
FROM parent p
INNER JOIN child c ON p.id = c.parent_id
WHERE EXISTS (
    SELECT 1
    FROM child c2
    WHERE c2.parent_id = p.id
    HAVING COUNT(*) = p.ChildrenCount
);

以上所有SQL语句均可直接在SQL Server中执行,无需编写存储过程。如果需要重复调用,也可以将SQL封装为视图或存储过程,但这属于优化范畴,并非需求实现的必要条件。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:49:51