我有一个有两列的表格,如下所示:
A 栏 | B 栏 |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
2 | 1 |
2 | 2 |
3 | 1 |
3 | 3 |
如何在 postgres 中查询“给我 A 的不同值,使得当 A 是常量时 B 包含 [1, 2]?”从上面的简单表格来看,此类查询的预期结果是 A = [1, 2]。
我一直在阅读 postgres 文档并编写了一些查询,但我觉得我在这里遗漏了一些明显的东西。
这来自多对多关系的连接表,我也在考虑重新审视那里的关系——也许我正在以比需要的更复杂的方式看待这个问题。但我在查询双方都有用例,例如:
“给定一组 B,给出包含 B 的所有给定值的 A 的所有实例”
以及
“给定一组 A,给出与 A 相关的 B 的所有实例”
这是一个常见的查询,一种规范方法使用聚合:
SELECT A
FROM yourTable
WHERE B IN (1, 2)
GROUP BY A
HAVING COUNT(DISTINCT B) = 2;