GROUP BY clause and contains nonaggregated column code example
Example 1: GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Example 2: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Example 3: Expression number 1 of select list is not in group by clause
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Example 4: select list is not in group by clause
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Example 5: Expression #1 of ORDER BY contains aggregate function and applies to the result of a non-aggregated query laravel
1. set strict to false in config/databtase.php
2. ->select([
'exam_registrations.id',
'exam_registrations.exam_id',
'exam_registrations.user_id',
DB::raw('sum(submissions.marks) as totalMarksGained')
])
->groupBy('exam_registrations.user_id')
->orderBy('totalMarksGained', 'DESC')