2014-07-03 75 views
0

&&組我有這樣的SQL查詢聚集功能由

select U.DisplayName, U.Reputation , nombre = count(B.Id) 
from Badges B, Users U 
where U.Location like '%usa%' 
and B.UserId = U.Id 
group by B.Id 

我不明白爲什麼我得到這個錯誤

Column 'Users.DisplayName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

  • 什麼是這個錯誤的原因是什麼?
  • 我該如何解決?
+1

U.displayname不在組列表中 – Azar

+0

你是什麼意思?我放了B.Id'組 –

回答

1

1 /錯誤意味着列'Users.DisplayName'不包括在組列表中。意味着SELECT CLause中的每一列必須是一個聚合函數或者包含在Groûpby List中。是

用於形成GROUP BY子句的規則如下:

  • GROUP BY可以指定任意數量的有效表達式,包括表中的列。
  • 通常,GROUP BY用於指定表中將包含公用數據的列,以便將行「分組」在一起以在該組行上執行某種聚合函數。
  • 使其在SELECT包括 GROUP BY條款的選擇列表中的唯一項是在GROUP BY
  • 集合函數指定
    • 表達式被在GROUP BY指定
  • 表達式不必包含在SELECT語句的選擇列表中

2 /嘗試列入選擇列表中的列:

select U.DisplayName, U.Reputation , nombre = count(B.Id) 
from Badges B, Users U 
where U.Location like '%usa%' 
and B.UserId = U.Id 
group by U.DisplayName, B.Id 
1

嘗試此

select U.DisplayName, U.Reputation , nombre = count(B.Id) 
from Badges B, Users U 
where U.Location like '%usa%' 
and B.UserId = U.Id 
group by U.DisplayName,U.Reputation