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')

Tags:

Sql Example