0

我想编写一个仅在满足严格条件时才从数据库返回“项目”的 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  |

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

4

2 回答 2

1

试试这个:

SELECT DISTINCT Item 
FROM data
WHERE item NOT IN(SELECT Item 
                  FROM data 
                  WHERE Myvalue BETWEEN 6 AND 9);
于 2013-09-09T13:53:51.043 回答
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 之间的行数。当没有行具有此条件时,它通过。

于 2013-09-09T13:58:33.847 回答