我是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'`
答案 0 :(得分:1)
您可以仅描述两种可能的组合,例如:
select *
from numbers
where (n1 = 1 and n2 = 2) or (n1 = 2 and n2 = 1)
如示例数据所示,假设1
和2
是唯一可能的值,那么这也将起作用:
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) )
组合可以非常方便。