Sql (Oracle jpql)具有多个计数值
我试图将表1中id存在于表2中的行返回1或3次。此sql用于执行一次have count,但当我多次使用ORs分隔它时,它将失败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
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
。希望这有帮助。谢谢你的解释。