如果所有子级都满足条件,则选择父级

2024-03-30

我的表格设置如下:

Parent
------
id, ...

Child
-----
id, parent_id, x, y

我想找到父母,或者不同的parent_id,如果allChild 中包含给定parent_id 的行满足涉及x 和y 的条件(在我的例子中x = y)。

例如:

Parent
------
id
 1
 2
 3

Child
id, parent_id, x, y
1,      1,     2, 3
2,      1,     3, 4
3,      2,     5, 5
4,      2,     6, 7
5,      3,     8, 8
6,      3,     9, 9

将导致 3。目前,我有一个查询可以找到parent_idsany的孩子符合标准。然后,我用它来检索这些记录,并在代码中检查它们是否所有孩子都符合条件。通过示例数据,我获取了parent_id 2和3,获取了包含所有子项的两条父记录,并进行了评估。如果可能的话,我想通过单个查询来完成此操作。


您可以使用NOT EXISTS

SELECT id 
FROM Parent p
WHERE NOT EXISTS
(
   SELECT 1 FROM Child c
   WHERE c.parent_Id = p.id
   AND c.x <> c.y
)

编辑:这是 sql-fiddle:http://sqlfiddle.com/#!3/20128/1/0 http://sqlfiddle.com/#!3/20128/1/0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果所有子级都满足条件,则选择父级 的相关文章

随机推荐