2012-10-19 42 views
3

我有一個在field2field1具有重複值的表具有我想保留在查詢中的值。分組依據包括非聚合字段

field1 field2 
Bob  2 
Bob  2 
Bob  3 
Bob  3 

此查詢使用GROUP BY子句:

select field2 
rom table 
group by field2 

大家都知道,我不能在select field1。我需要在我的輸出中包含field1。不知道如何做到這一點。

回答

2

你想從field1保存什麼? MIN值?

select field2, min(field1) field1 
    from table 
group by field2 

也許最大值?

select field2, max(field1) field1, count(field2) total 
    from table 
group by field2 

你必須對它進行聚合,否則就沒有意義。考慮一下這個數據:

field1 field2 
Bob  2 
Jim  2 
Tim  2 

好了,你想用field1field2。您按field2進行分組,以便在輸出中爲您提供一行field2。你不能在行中擁有全部3個(Bob,Jim,Tim),這就是爲什麼你必須對它進行聚合才能邏輯地選擇一個值(或者是多個數值的總和,例如數值列的平均值)。

0

另一種選擇是

select * 
from table T 
join 
    (select field2 
    from table 
    group by field2)A 
on T.field2=A.field2