2010-10-28 134 views
0

我有这样的事情问题:GROUP BY子句表示结果先前由where子句

select A, B, C
from tableA
where A = '123'
group by B

滤出,结果包括其A不是“123”的条目。为什么这不是我预期的结果?

感谢

数据库具有16K条目

实际结果(7K的条目):其中A = '123' 和条目的混合物A = '其他'

预期结果(5K条目) :A ='123'的所有条目

+2

你能举一个具体价值的例子吗?表中的那些,查询返回的那些以及所需的那些。 – Flinsch 2010-10-28 07:07:18

+2

这怎么可能?你必须使用一些聚合函数的值,这是没有分组:“汇总(A),B,SUM(C)WHERE A ='123'GROUP BY B' – 2010-10-28 07:15:17

+0

请你可以发布你的实际代码?就目前而言,该查询只能**返回A = 123 - 如果您看到其他值,则您的代码必须与发布的代码显着不同。 – 2010-10-28 13:51:23

回答

1

由于A和C不在条件内,因此您的查询不起作用。对于C,你必须使用最小值,最大值,平均值,计数,...聚合函数,而对于您可以使用聚合函数的类似直接写给值:

Select Max(A) as A, B, Max(C) as C 
From Table 
Where A='123' 
Group by B 

或者

Select '123' as A, B, Max(C) as C 
From Table 
Where A='123' 
Group by B 
+0

或者您可以按A,B分组 – 2010-10-28 07:58:34