2010-02-24 55 views
9

我有下表。使用where和group by clause的Mysql查詢

mysql> select * from consumer9; 
+------------+--------------+-------------------+ 
| Service_ID | Service_Type | consumer_feedback | 
+------------+--------------+-------------------+ 
|  100 | Computing |    -1 | 
|   35 | Printer  |     0 | 
|   73 | Computing |    -1 | 
|   50 | Data   |     0 | 
+------------+--------------+-------------------+ 

我想在我的項目中使用GROUP BY子句。我收到的時候我使用的查詢時出現錯誤:

SELECT Service_ID, Service_Type, SUM(consumer_feedback) 
FROM consumer9 
GROUP BY Service_ID 
WHERE Service_Type=Printer; 

錯誤

ERROR 1064(42000):你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的權利 語法使用近「其中的service_type =打印機」在1號線

+1

我希望有人正在編輯此權利。我的眼睛正在傷害:( – Codesleuth 2010-02-24 09:30:53

回答

24

下面的查詢應該工作 手冊。

select Service_ID, Service_Type, sum(consumer_feedback) 
from consumer9 
where Service_Type=Printer 
group by Service_ID, Service_Type; 

記住,where子句group by子句之前去,並在選擇部分所有的非聚集方面將必須出現在GROUP BY子句。

5

使用having條款,而不是where

SELECT Service_ID, Service_Type, SUM(consumer_feedback) 
FROM consumer9 
GROUP BY Service_ID 
HAVING Service_Type='Printer'; 

問候。

+1

不好的答案,20秒與HAVING當一個地方需要0.0005。我只是嘗試在這個職位多次的語法相似 – 2015-08-31 08:08:38

+0

HAVING工程,以及可能更適合處理派生數量(這裏是一個人爲的例子)SUM(consumer_feedback)總數... HAVING total> 0'表示WHERE不能訪問。 – ssteele 2017-10-16 16:46:12