加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如果所有子项都符合条件,则选择父项

发布时间:2020-12-12 06:21:45 所属栏目:MsSql教程 来源:网络整理
导读:我有这样的表设置: Parent------id,...Child-----id,parent_id,x,y 如果Child中包含给定parent_id的所有行都满足涉及x和y的标准(在我的情况下为x = y),我想找到Parents或不同的parent_id(s). 例如: Parent------id 1 2 3Childid,y1,1,2,32,3,43,5,54,6,75,8
我有这样的表设置:
Parent
------
id,...

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

如果Child中包含给定parent_id的所有行都满足涉及x和y的标准(在我的情况下为x = y),我想找到Parents或不同的parent_id(s).

例如:

Parent
------
id
 1
 2
 3

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

将导致3.目前,我有一个查询,查找parent_ids,任何一个孩子符合条件.然后我使用它来检索那些记录并在代码中检查它们是否所有孩子都符合标准.使用示例数据,我获得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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读