Oracle SQL Query用于检索列中的值等于另一个表中的值计数的记录

时间:2017-04-06 22:08:04

标签: sql oracle

我有两张桌子: 表A

AId | ImageCount

1 | 1
 2 | 1
 3 | 2

表B

BId |的 AForeignKey

1 | 1
2 | 3
3 | 3

我能够得到这个查询,这让我可以直观地比较这些值:

SELECT t1.AId,t1.ImageCount,COUNT(t2.AForeignKey)AS RecordsInB 从一个t1 LEFT JOIN B t2 ON tw.AForeignKey = t1.AId GROUP BY t1.AId,t1.ImageCount

但我无法弄清楚如何消除ImageCount不等于RecordsInB的行。所有我真正关心它的AId列,但我在上面的查询中显示其他列只是为了让我可以在视觉上进行比较。

所以输出应该如下所示:

AID

1
3

或视觉比较:

AID |的 ImageCount |的 RecordsInB

1 | 1 | 1

3 | 2 | 2

我希望这是有道理的。

1 个答案:

答案 0 :(得分:1)

如果我理解得很清楚,您需要过滤查询结果,只保留行having t1.imageCount = COUNT(t2.AForeignKey)

如果是这样,只需将此条件添加到您的查询中:

SELECT t1.AId, t1.ImageCount, COUNT(t2.AForeignKey) AS RecordsInB 
FROM tableA t1
LEFT JOIN tableB t2 ON t2.AForeignKey = t1.AId
GROUP BY t1.AId, t1.ImageCount
having t1.imageCount = COUNT(t2.AForeignKey)