MySQL получает обе опции, другие базы данных - нет.
Другие базы данных (hsqldb, Oracle) заставят вас поместить все поля, выбранные в предложении GROUP BY.
Когда каждый помещает все столбцы после предложения GROUP BY, результат обычно менее неоднозначен. MySQL "интерпретирует" ваш запрос как:
SELECT questions.question_id, FIRST_VALUE(questions.title), FIRST_VALUE(questions.content), FIRST_VALUE(questions.view_count), FIRST_VALUE(questions.posted_on), FIRST_VALUE(users.user_id), FIRST_VALUE(users.group_id), FIRST_VALUE(users.username), FIRST_VALUE(users.first_name), FIRST_VALUE(users.last_name) COUNT(answers.answer_id) AS answer_count
FROM (questions)
JOIN answers ON questions.question_id = answers.question_id
JOIN users ON questions.user_id = users.user_id
WHERE `questions`.`publish` = 'Y' AND `questions`.`deleted_at` IS NULL AND `users`.`blocked` = 'N'
GROUP BY questions.question_id
Это если бы в MySQL была функция "FIRST_VALUE".
Поскольку вы группируете по уникальному идентификатору (questions.question_id), результаты совпадают.
Если один группируется по неуникальному идентификатору, возвращаемые значения очень неоднозначны.
Единственное, в чем я не уверен, так это в том, что более эффективно распределить группу по одному полю. Я предполагаю, что БД достаточно умны, чтобы понимать, что вы группируете по уникальному идентификатору, и планировать выполнение соответственно, но я не уверен.
Если нет никакой разницы в эффективности - вы должны поставить все поля после GROUP BY, потому что это более стандартно. В противном случае решите, предпочитаете ли вы писать стандартный SQL вместо написания эффективного SQL.