2016-11-04 73 views
3

我有一個表是這樣的:SQL是否有像WHERE或HAVING ONLY?

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

現在我想獲得有只有 STATUS 1鍵,使用JPA。

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)?

+0

你的意思是「使用JPQL」,「使用SQL」,還是什麼? –

+0

好吧,我正在尋找一些也可以與JPA一起工作的標準SQL(可以重寫爲JPQL),而JPQL特有的東西也可以。 –

回答

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,但措辭不同。

+0

非常好。在10,000,00行的表格上執行的方式也比我笨拙的方法更好。 –