我有一张这样的桌子:
i j
------
A 2
A 3
A 7
B 8
B 7
C 2
D 9
我希望i
的所有值都没有j
低于7的值,所以我想要
result
-----
B
D
我想出了:
select table.i
from table
where table.i not in (
select table.i from table where j < 7)
group by table.i
但感觉非常笨拙。这可以改善吗?
答案 0 :(得分:3)
您的方法很好,但我会使用not exists
而不是not in
。
另一种选择是group by
:
select i
from t
group by i
having min(j) >= 7;
或者,如果您的数据库支持minus
/ except
:
select i
from t
except
select i
from t
where i < 7;
答案 1 :(得分:0)
你可以试试......
select i
from t
left join ( -- Get all i vlaues where j is < 7
select distinct i
from t
where j < 7
) x on t.i = x.i
where x.i is null