в чем разница, (запятая) и и в группе? - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу узнать количество уроков, пройденных студентами в каждом семестре.Ниже приведен запрос, который дает правильный ответ

select semester,subject,count(stdId) 
from tblSubjectMaster 
group by subject, semester

Но я пробовал и другой запрос, и он дает другой результат.Запрос

select semester,subject,count(stdId) 
from tblSubjectMaster
group by subject and semester

в чем разница, и в группе по?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

GROUP BY subject, semester означает создание строки в наборе результатов для каждой уникальной комбинации subject и semester с количеством строк с этой комбинацией.

subject and semester является логическим выражением, TRUE, если оба значения subject и semester имеют значение true, в противном случае возвращается FALSE.Если столбец содержит строки, непустое значение - true, пустая строка - false;если столбец содержит число, ненулевое значение равно true, ноль - false.

Таким образом, в результате вы получите не более двух строк.Одна группа для всех строк, где оба столбца имеют значение true, и одна строка для всех остальных.

Практически бесполезно для GROUP BY col1 AND col2.

0 голосов
/ 02 февраля 2019

Запятая разделяет выражения.group by subject, semester создает отдельную группу для каждой отдельной пары значений.Я думаю, это то, что вы хотите.

Пример использования AND - это только одно логическое выражение, только с двумя различными группами, одна для true и одна для false ,AND - логический оператор.Он вычисляет два своих операнда и затем выдает логическое соединение между ними.

Таким образом, он оценивает и subject, и semester только как логические значения, а затем, если оба значения имеют значение true, тогда все логическое выражение имеет значение true.Именно так работает логическое значение AND.

MySQL рассматривает логические значения как то же самое, что и целочисленные значения 1 для true и 0 для false.Поэтому он будет оценивать subject и semester как числаЭто может привести к неожиданным результатам.

Вы должны использовать запятую, если хотите сгруппировать по двум столбцам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...