2013-02-21 18 views
0

我的表計數字段值 - 要獲得如何在mysql中

pid  id subject section 
1  1 7   0 
2  1 12   0 
3  1 13   1 
4  1 13   2 
5  1 13   3 
6  1 14   3 
7  1 14   4 
8  2 15   1 
9  2 16   1 

結果 -

id subject total 
1 7  1 
1 12  1 
1 13  3 
1 14  2 

我的查詢 -

SELECT DISTINCT(SUBJECT), count(section) 
FROM mytable 
GROUP BY section 
WHERE id = 1 

但這是拋出一個錯誤,讓我知道我在做什麼錯了

錯誤

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 1' at line 4: SELECT DISTINCT(SUBJECT), count(section) FROM mytable GROUP BY section WHERE id = 1 
+0

如果你得到一個錯誤信息,請與您的問題一起張貼。錯誤消息有一個目的:幫助診斷問題。不要讓我們猜測。 – 2013-02-21 11:16:56

+0

嘗試此鏈接http://stackoverflow.com/questions/3003457/count-vs-countcolumn-name-which-is-more-correct – 2013-02-21 11:17:43

回答

2

語法錯誤是由於錯位的WHERE子句造成的。它需要在GROUP BY之前去。此外:

  • 您正按您想要求和的列進行分組。
  • 您正在不必要地使用DISTINCT。

查詢應該是在這條線:

SELECT SUBJECT, count(section) 
FROM mytable 
WHERE id = 1 
GROUP BY SUBJECT 
+0

完美..工作就像一個魅力... thx很多..並感謝評論..我在學習模式..所以它會真的幫助我很多:) – Trialcoder 2013-02-21 11:27:33

1

您需要group bysubject因爲這是不同的值。在該組中,您要計算section的外觀。

SELECT 1 as id, subject, count(section) as total 
FROM mytable 
WHERE id = 1 
GROUP BY subject 

而且由於id列不是該組中,您可以選擇靜態值,或者你可以用聚合函數替換它像min(id) as id代替1 as id

+0

它引發錯誤 - >您的SQL語法中有錯誤;請檢查與您的MySQL服務器版本對應的手冊,以便在第4行'WHERE id = 1'附近使用正確的語法:SELECT 1作爲id,subject,count(section)as total FROM mytable GROUP BY subject WHERE id = 1 – Trialcoder 2013-02-21 11:25:46

+0

對不起,我沒有注意到'where'和'group by'的錯誤順序。現在修復。 – 2013-02-21 11:31:49

0

您按主題想組,而不是部分。而且你不需要明確 - 它與GROUP BY是多餘的。

SELECT id, subject, count(section) 
    FROM mytable 
    WHERE id = 1 
    GROUP BY id, subject 
0
SELECT SUBJECT, count(section) 
FROM mytable 
WHERE id = 1 
GROUP BY SUBJECT