Если вы используете GROUP BY
, вы можете выбрать только те столбцы, которые вы группирование по или aggregation functions. Больше информации в this question. Или, как выразилось MSDN:
A Выберите пункт утверждения, что делит результат запроса в группы строк, как правило, с целью выполнения одной или несколько скоплений на каждую группу. Оператор SELECT возвращает одну строку для каждой группы.
Так что в вашем случае вы можете выбрать только Class
, потому что каждая строка будет сгруппирован по Class
. Вы можете посмотреть на него как Dictionary<string, List<Row>>
на C#, где string
здесь разные классы, а остальные . Или как двухмерный массив.
Что вы, вероятно, хотите сделать, это просто упорядочить по классу (без group by
) или выполнить функцию агрегации в классе. Например, сколько учеников в каждом классе?
SELECT students_details.class AS Class, count(*) AS NumberOfStudents
FROM students_det INNER JOIN students ON students_details.studentID = students.studentID
ORDER BY Class
GROUP BY Class
Если вы используете 'GROUP BY', вы можете выбрать только столбцы, которые вы группируете, или функции агрегации. Дополнительная информация в [этот вопрос] (http://stackoverflow.com/questions/11991079/select-a-column-in-sql-not-in-group-by). – smoksnes
@smoksnes Пожалуйста, измените ваш комментарий, чтобы ответить. – codelab
@codelab - Конечно. Это едва ли считается ответом, но теперь он там ... – smoksnes