When we run group by in mysql "group by list doesn't require as selected list" . This is another myth and confusing for mysql users.
There is a table structure and some test data which I ran on mysql and sql server simultaneously.
Create table groupby_test ( id int,desg varchar (20), location varchar(20));
insert into groupby_test values (1,'Jr Software','Delhi');
insert into groupby_test values (2,'Jr Software','Noida');
insert into groupby_test values (3,'Software Software','Delhi');
insert into groupby_test values (4,'Sr Software Software','Gurgaon');
insert into groupby_test values (5,'Software Software','Gurgaon');
Then Executed below group by query on mysql and sql server.
select desg, location from groupby_test group by desg;
Result in MySQL;
Result in SQLServer
Why this happening with MySQL?
First of all this is the wrong query for any databases. select desg, location from groupby_test group by desg;..
If this is running then this will not give correct result. MySQL doesn't give error due to its sql_mode that is not checking either consistency or strict mode. We can set it off or on.
To verify execute below query on MySQL instance.
show variables like '%sql_mode%'
There will no record.
Now do changes in setting by below command.
SET sql_mode = 'ONLY_FULL_GROUP_BY'
Now re-run query..
Error Code: 1055. 'abcd.groupby_test.location' isn't in GROUP BY 0.000 sec
There is a table structure and some test data which I ran on mysql and sql server simultaneously.
Create table groupby_test ( id int,desg varchar (20), location varchar(20));
insert into groupby_test values (1,'Jr Software','Delhi');
insert into groupby_test values (2,'Jr Software','Noida');
insert into groupby_test values (3,'Software Software','Delhi');
insert into groupby_test values (4,'Sr Software Software','Gurgaon');
insert into groupby_test values (5,'Software Software','Gurgaon');
Then Executed below group by query on mysql and sql server.
select desg, location from groupby_test group by desg;
Result in MySQL;

Result in SQLServer
Msg 8120, Level 16, State 1, Line 9 Column
'groupby_test.location' is invalid in the select list because it is not
contained in either an aggregate function or the GROUP BY clause.
Why this happening with MySQL?
First of all this is the wrong query for any databases. select desg, location from groupby_test group by desg;..
If this is running then this will not give correct result. MySQL doesn't give error due to its sql_mode that is not checking either consistency or strict mode. We can set it off or on.
To verify execute below query on MySQL instance.
show variables like '%sql_mode%'
There will no record.
Now do changes in setting by below command.
SET sql_mode = 'ONLY_FULL_GROUP_BY'
Now re-run query..
Error Code: 1055. 'abcd.groupby_test.location' isn't in GROUP BY 0.000 sec
MySQL also require group by list equal by select list and aggregation.
Thanks
Comments
Post a Comment
Plz dont forget to like Facebook Page..
https://www.facebook.com/pages/Sql-DBAcoin/523110684456757