SQL有类似于WHERE还是只有HAVING?

时间:2016-11-04 11:29:10

标签: sql

我有一张这样的表:

| ID | SOMEKEY | STATUS |
-------------------------
|  1 | A       |      0 |
|  2 | A       |      1 |
|  3 | B       |      1 |
|  4 | B       |      1 |

现在我想使用JPA获取状态1的密钥。

select o.somekey
from only_test o
where o.status = 1
and (select count(distinct s.status) from only_test s where s.somekey = o.somekey) = 1
group by o.somekey

也适用于JPA,只给出了我想要的B,但对我来说看起来很笨拙。

不存在像

这样的东西
having only status = 1
SQL中的

也适用于JPA(JPQL)?

1 个答案:

答案 0 :(得分:2)

使用GROUP BYHAVING

select o.somekey
from only_test o
group by o.somekey
having max(o.status) = min(o.status) and min(o.status) = 1;

所以,我猜你的问题的答案是"是的",它确实有类似WHERE ONLY的内容,但它的措辞不同。