SQL仅在条件满足重复信息时返回值

SQL仅在条件满足重复信息时返回值,sql,between,strict,Sql,Between,Strict,我想编写一个SQL查询,仅当满足严格条件时才从数据库返回“Item”。实际上,我想说“仅当MyValue从不在6和9之间时获取项目 Item | MyValue 1 | 3 1 | 6 1 | 9 1 | 12 2 | 1 2 | 4 3 | 3 3 | 6 3 | 9 我想到了: SELECT * FROM data WHERE(MyValue NOT BETWEEN 6 and 9) 但这让我

我想编写一个SQL查询,仅当满足严格条件时才从数据库返回“Item”。实际上,我想说“仅当MyValue从不在6和9之间时获取项目

 Item | MyValue
   1  |  3
   1  |  6
   1  |  9
   1  |  12
   2  |  1
   2  |  4
   3  |  3
   3  |  6
   3  |  9
我想到了:

  SELECT * FROM data WHERE(MyValue NOT BETWEEN 6 and 9)
但这让我明白:

   1  |  3
   1  |  12
   2  |  1
   2  |  4
   3  |  3
其中,目标是简单地实现这一点:

 Item |
   2  |
我希望这是有意义的。任何帮助都将不胜感激。

尝试以下方法:

SELECT DISTINCT Item 
FROM data
WHERE item NOT IN(SELECT Item 
                  FROM data 
                  WHERE Myvalue BETWEEN 6 AND 9);

您可以通过聚合和
拥有
子句来实现这一点:

select item
from t
group by item
having sum(case when MyValue BETWEEN 6 and 9 then 1 else 0 end) = 0;
having
子句统计值介于6和9之间的行数。当没有行具有此条件时,它将通过