我怎么能用它的总和来过滤一组元素?假设我有:
id
1
2
3
4
是否有我可以使用的条款:
select * from numbers where sum = 6
请注意,该查询不会这样做,这是一个解释或多或少我的意思的例子。
这个条款会返回1,2和3吗?
答案 0 :(得分:1)
我猜你想要累积和等于6.这是使用标准SQL的一种方法:
select id
from numbers n
where 6 = (select sum(n2.id) from numbers n2 where n2.id <= n.id);
编辑:
哎呀,倒退了:
select id
from numbers n
where 6 >= (select sum(n2.id) from numbers n2 where n2.id <= n.id);
然而,即使没有一个加起来恰好是6,这也会返回值。
答案 1 :(得分:0)
对于大小为2的元素集,您可以尝试类似:
select n.id as "ID1", nn.id as "ID2"
from t1 nn,
(select n.id, (6-n.id) as complete
from t1 n ) n
where nn.id = n.complete
and nn.id != n.id
链接到fiddle