SQL仅选择存在完全多个关系的行

Lai*_*zer 10 mysql sql

这与这个问题密切相关,但增加了另一个要求.

给定父表"父"

???????????????????????
? PARENT_ID  ? NAME   ?
???????????????????????
?         1  ? bob    ?
?         2  ? carol  ?
?         3  ? stew   ?
???????????????????????
Run Code Online (Sandbox Code Playgroud)

和父和一个(这里未指定的)属性表之间的多对多关系表'rel'

?????????????????????????
? PARENT_ID  ? PROP_ID  ?
?????????????????????????
?         1  ?       5  ?
?         1  ?       1  ?
?         2  ?       5  ?
?         2  ?       4  ?
?         2  ?       1  ?
?         3  ?       1  ?
?         3  ?       3  ?
?????????????????????????
Run Code Online (Sandbox Code Playgroud)

我怎样才能选择具有所有的家长只有一组指定的关系?例如,使用样本数据,我如何找到与属性5和1完全相关的所有父母?

jue*_*n d 10

SELECT PARENT_ID
FROM rel
GROUP BY PARENT_ID
HAVING SUM(PROP_ID NOT IN (5,1)) = 0
AND SUM(PROP_ID = 1) = 1 
AND SUM(PROP_ID = 5) = 1
Run Code Online (Sandbox Code Playgroud)

  • +1,但这不是*完全*正确.如果缺少一个,它仍然有效. (2认同)