在单个查询中将COUNT与WHERE组合在一起的SQL

时间:2016-11-28 14:46:55

标签: sql

这是数据,称之为表T

A   B
--  --
1   14
2   15
3   16
4   1
4   3
4   6
4   9
4   12
4   15

我想获得只有一个值且B值为15的A的值。 有两行,其中B = 15但有6行,其中A = 4,只有一行,其中A = 2.

所以正确的SQL应该返回2。

我试过这个,但它返回两行。

select A from T group by A,B having Count(A) = 1 and B = 15

这同样失败了:

select A from T where B = 15 group by A having count( A ) = 1

2 个答案:

答案 0 :(得分:2)

试试这个:

select A
from T
group by A
having Count(A) = 1 and Max(B) = 15;

您的问题似乎是您正在按两列进行分组。您只想按A分组。

不可否认,您的查询有group by A, T,但我认为这是一个错字,基于所描述的行为。

答案 1 :(得分:1)

您可以在按A分组后检查B的计数。

select A 
from T 
group by A
having Count(B) = 1 and max(B) = 15