如何计算mysql中的字段值

时间:2013-02-21 11:14:46

标签: mysql sql count

我的表 -

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 

4 个答案:

答案 0 :(得分:2)

语法错误是由于错误的WHERE子句引起的。它需要在 GROUP BY之前。此外:

  • 您要按要加总的列进行分组。
  • 您正在不必要地使用DISTINCT。

查询应该在这一行:

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

答案 1 :(得分:1)

您需要group by subject,因为这是不同的值。在该组中,您希望计算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

等聚合函数

答案 2 :(得分:0)

您希望按主题而不是分组进行分组。而且你不需要区别 - 它与GROUP BY是多余的。

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

答案 3 :(得分:0)

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