一尘不染

SQL仅选择存在确切多个关系的行

mysql

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

给定父表“ parent”

╔════════════╦════════╗
║ PARENT_ID  ║ NAME   ║
╠════════════╬════════╣
║         1  ║ bob    ║
║         2  ║ carol  ║
║         3  ║ stew   ║
╚════════════╩════════╝

以及父表与(此处未指定)属性表之间的多对多关系表“ rel”

╔════════════╦══════════╗
║ PARENT_ID  ║ PROP_ID  ║
╠════════════╬══════════╣
║         1  ║       5  ║
║         1  ║       1  ║
║         2  ║       5  ║
║         2  ║       4  ║
║         2  ║       1  ║
║         3  ║       1  ║
║         3  ║       3  ║
╚════════════╩══════════╝

我该如何选择具有 全部只有 一组特定关系的所有父母?例如,通过样本数据,我如何找到与属性5和1完全相关的所有父母?


阅读 312

收藏
2020-05-17

共1个答案

一尘不染

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
2020-05-17