在 postgres 中查询 A 的不同值,其中 B 具有给定集合的所有值

问题描述 投票:0回答:1

我有一个有两列的表格,如下所示:

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 的所有实例”

postgresql
1个回答
0
投票

这是一个常见的查询,一种规范方法使用聚合:

SELECT A
FROM yourTable
WHERE B IN (1, 2)
GROUP BY A
HAVING COUNT(DISTINCT B) = 2;
© www.soinside.com 2019 - 2024. All rights reserved.