2010-10-28 91 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