查找特定值的组合
Posted
技术标签:
【中文标题】查找特定值的组合【英文标题】: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 版本。
【参考方案1】:
这可能是最快的解决方案之一:
SELECT col1 -- already DISTINCT?
FROM tbl t1
JOIN tbl t2 USING (col1)
WHERE t1.col2 = 6
AND t2.col2 = 7;
假设(col1, col2)
上有一个PRIMARY KEY
或UNIQUE
约束,就像它通常实现的那样。否则添加DISTINCT
。
还有很多其他方法可以实现关系除法。以下是一些:
How to filter SQL results in a has-many-through relation【讨论】:
【参考方案2】:试试:
SELECT col1
FROM mytable
WHERE col2 IN (6, 7)
GROUP BY col1
HAVING COUNT(DISTINCT col2) = 2
【讨论】:
(我希望 DISTINCT 是多余的。) 没有已知的唯一约束,因此需要 DISTINCT。以上是关于查找特定值的组合的主要内容,如果未能解决你的问题,请参考以下文章