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

时间:2013-09-09 13:50:48

标签: sql between strict

我想编写一个只在满足严格条件时才从数据库返回“Item”的SQL查询。实际上,我想说“仅当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  |

我希望这是有道理的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

请改为尝试:

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

答案 1 :(得分:0)

您可以使用聚合和having子句执行此操作:

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之间的行数。当没有行具有此条件时,它会传递。