SQL:选择条件适用于所有的唯一值 - 可以改进语句吗?

时间:2018-02-21 17:20:37

标签: sql

我有一张这样的桌子:

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 

但感觉非常笨拙。这可以改善吗?

2 个答案:

答案 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