2015-02-09 18 views
0

我想從Table1返回Table1中的行,其ID爲Table2中存在的1或3次。這個SQL適用於執行一次計數,但是當我多次將它包括在內時,它會失敗。(Oracle jpql)具有多個數值

Table1    Table2 

id  color   id 
----- -----   ----- 
1  bl    1 
2  r    4 
3  g    1 
4  y    2 
          1 
          2 

SELECT d FROM Table1 d 
WHERE d.id IN 
( SELECT e.id FROM Table2 e 
    GROUP BY e.id 
    HAVING COUNT(e.id) = 1 OR HAVING COUNT(e.id) = 3 
) 

預期輸出:

id  color 
---  ----- 
1  bl 
4  y 
+0

所有SQL問題需要指明*,其中* RDBMS你使用,因爲它們都具有完全不同的SQL語言實現(通常違反標準,甚至)。 – jpmc26 2015-02-09 23:06:47

+0

你嘗試過省略第二個'HAVING'還是使用'IN'? – 2015-02-09 23:08:33

+0

我省略了第二個HAVING關鍵字,它的工作原理,謝謝。 – CodeIt 2015-02-10 00:16:37

回答

0

像這樣的東西應該做的伎倆:

SELECT d.* FROM 
Table1 d, 
( SELECT e.id id, COUNT(1) myCount FROM Table2 e 
    GROUP BY e.id 
) t 
WHERE d.id = t.id 
AND (t.myCount = 1 OR t.myCount = 3)