0

私のテーブル-

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

4 に答える 4

2

WHERE構文エラーは、句の置き忘れが原因です。 に行く必要がありますGROUP BY。さらに:

  • 合計する列でグループ化しています。
  • DISTINCTを不必要に使用しています。

クエリは次の行にある必要があります。

SELECT SUBJECT, count(section)
FROM mytable
WHERE id = 1
GROUP BY SUBJECT
于 2013-02-21T11:22:36.157 に答える
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

于 2013-02-21T11:16:23.843 に答える
0

セクションではなく、件名でグループ化する必要があります。また、個別にする必要はありません。GROUPBYと重複しています。

SELECT id, subject, count(section)
   FROM mytable
   WHERE id = 1
   GROUP BY id, subject
于 2013-02-21T11:16:41.380 に答える
0
SELECT SUBJECT, count(section)
FROM mytable
WHERE id = 1
GROUP BY SUBJECT
于 2013-02-21T11:22:56.917 に答える