您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL查询以获取具有子记录列表的父表记录

SQL查询以获取具有子记录列表的父表记录

这将返回所有具有[至少]个孩子带有“ fizz” foo和[至少]个孩子带有“ buzz” foo的所有父记录。我认为这是问题中所需要的。

同样,虽然该查询可能不是最佳选择,但从某种意义上来说,它是通用的,它可以与大多数sql实现一起使用,不仅适用于支持CTE,子查询和相关结构的更现代的sql实现。

   SELECT DISTINCT Parent.ID
    FROM Parent
    JOIN Child C1 ON Parent.ID = C1.parent_Id
    JOIN Child C2 ON Parent.ID = C2.parent_id
    WHERE C1.foo = 'fizz'
      AND C2.foo = 'buzz'

: 既然Joel Potter已经在他的答案中修复了该查询,我们可能同意他的方法比上面列出的查询具有多个优点(请给他一些+ reps)。特别是:

以下是Joel在这里进行的查询(稍作修改),以显示如何将其扩展为2个以上的foo值。

SELECT Parent.Id
FROM Parent
INNER JOIN Child on Parent.Id = child.parent_id
WHERE Child.foo IN ('fizz', 'buzz')  -- or say, ... IN ('fizz', 'buzz', 'bang', 'dong')
GROUP BY Parent.Id
HAVING COUNT(DISTINCT Child.foo) = 2  -- or 4 ...
SQLServer 2022/1/1 18:31:02 有439人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶