Sql (Oracle jpql)具有多个计数值

Sql (Oracle jpql)具有多个计数值,sql,Sql,我试图将表1中id存在于表2中的行返回1或3次。此sql用于执行一次have count,但当我多次使用ORs分隔它时,它将失败 Table1 Table2 id color id ----- ----- ----- 1 bl 1 2 r 4 3 g 1 4 y

我试图将表1中id存在于表2中的行返回1或3次。此sql用于执行一次have count,但当我多次使用ORs分隔它时,它将失败

    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

像这样的事情应该可以做到:

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)

所有SQL问题都需要指出您使用的是哪种RDBMS,因为它们的SQL语言实现完全不同(甚至经常违反标准)。您是否尝试过省略第二个
HAVING
或在
中使用
?我省略了第二个HAVING关键字,它可以工作,谢谢。
HAVING
的工作原理与
WHERE
类似,只是在组而不是行上,所以正如SQL语句只能有一个
WHERE
子句一样,它只能有一个
HAVING
。希望这有帮助。谢谢你的解释。