选择具有至少一个where条件实例的行

时间:2019-09-03 22:10:55

标签: sql postgresql

我是SQL新手。我有以下查询,该查询选择至少包含1的所有行。

select * from numbers where n1 = '1' OR n2 = '1' 

如何选择至少包含1和1的行?

例如,如果我的桌子是这样-

n1 n2
1  1 
1  1
1  2
1  1
2  1
2  2

我想要以下输出,因为这是仅有的两行,其中至少有1和1。

n1 n2
1  2
2  1

我无法执行以下操作,因为这还会选择仅包含一个和两个的行。

select * from numbers where n1 = '1' OR n2 = '1' OR n1 = '2' OR n2 = '2'`

2 个答案:

答案 0 :(得分:1)

您可以仅描述两种可能的组合,例如:

select * 
from numbers 
where (n1 = 1 and n2 = 2) or (n1 = 2 and n2 = 1) 

如示例数据所示,假设12是唯一可能的值,那么这也将起作用:

where least(n1, n2) = 1 and greatest(n1, n2) = 2

在相同的假设下,更好的是(如Jonnix所述):

where n1 + n2 = 3

答案 1 :(得分:1)

如果您有两列和两个值,则可以执行以下操作:

where (n1, n2) in ( (1, 2), (2, 1) )

组合可以非常方便。