我想编写一个只在满足严格条件时才从数据库返回“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 |
我希望这是有道理的。任何帮助将不胜感激。
答案 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之间的行数。当没有行具有此条件时,它会传递。