【问题标题】:Retrieving the a column value where the primary key is a tuple (a,b) and where all rows (a,b') must exist for a given list for b' values检索主键为元组 (a,b) 且所有行 (a,b') 必须存在于 b' 值的给定列表的 a 列值
【发布时间】:2020-09-02 17:40:35
【问题描述】:

我有一个表格 A|B|C 的表,其中元组 (a,b) in (A,B) 是主键。我有 B 的值列表 (BVAL),我需要 A 列中的元素,其中存在 b' in BVAL 的类型 (a,b') 的每个值的行条目。

目前我已经实现了一个脚本,该脚本检索 BVAL 的第一个元素的第一个全部 (a,b''),然后迭代并细化列表,直到 BVAL 的最后一个元素。我相信它在大型数据库中会很慢,并且相信存在更快的解决方案。将不胜感激。

假设我们有下表:

+---+---+
| A | B |
+---+---+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 1 |
| 2 | 2 |
| 3 | 1 |
+---+---+

如果 BVALs 列表由 (1,2) 组成,则查询应返回 1 和 2

【问题讨论】:

  • 请提供样本数据和期望的结果。你的解释很难理解。

标签: python sql postgresql count psycopg2


【解决方案1】:

我了解您希望 as 具有所有 b 值。如果是这样,您可以使用group by 和having:

select a
from mytable
where b in (1, 2)   -- either value
group by a
having count(*) = 2 -- both match 

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    select distinct a
    from t
    where b in ( . .  . );  -- list of b values here
    

    【讨论】:

      猜你喜欢
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 2022-01-15
      • 2010-12-08
      • 1970-01-01
      相关资源
      最近更新 更多