【问题标题】:Finding combinations of specific values查找特定值的组合
【发布时间】:2016-12-14 13:33:32
【问题描述】:

我不知道如何编写下面的查询。

我的桌子是

col1 col2 
5   1
5   5
5   6
5   7
4   5
4   8
4   9
4   3
3   3
3   5

我需要选择不同的 col1 id,其中两个参数都存在于 col2 中。 例如。如果我发送 6,7 它应该发送给我 5

【问题讨论】:

  • 请注意这不是递归查询。相应地更改标题。
  • 谢谢,请建议一个标题,会做需要
  • 您的问题应该提供实际的表定义(CREATE TABLE 语句)和您的 Postgres 版本。

标签: sql postgresql relational-division


【解决方案1】:

这可能是最快的解决方案之一:

SELECT col1  -- already DISTINCT?
FROM   tbl t1
JOIN   tbl t2 USING (col1)
WHERE  t1.col2 = 6
AND    t2.col2 = 7;

假设(col1, col2) 上有一个PRIMARY KEYUNIQUE 约束,就像它通常实现的那样。否则添加DISTINCT

还有很多其他方法可以实现关系除法。以下是一些:

【讨论】:

    【解决方案2】:

    试试:

    SELECT col1
    FROM mytable
    WHERE col2 IN (6, 7)
    GROUP BY col1
    HAVING COUNT(DISTINCT col2) = 2
    

    【讨论】:

    • (我希望 DISTINCT 是多余的。)
    • 没有已知的唯一约束,因此需要 DISTINCT。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多