Skip to main content

Group by list doesn't require as selected list

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

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

Popular posts from this blog

History of MySQL from AB Corp to Cloud Database

MySQL was created by a Swedish company, MySQL AB, founded by David Axmark, Allan Larsson and Michael "Monty" Widenius. Original development of MySQL by Widenius and Axmark began in 1994. The first version of MySQL appeared on 23 May 1995. Its name is a combination of "My", the name of co-founder Michael Widenius's daughter,and "SQL", the abbreviation for Structured Query Language. ·          23 May 1995 - First internal release ·          Year 1996 - Version 3 o     Simple CRUD operations o     January 1997 Windows version was released on 8 January 1998 for Windows 95 and NT o     production release 1998, from www.mysql.com ·          Year 2002 - Version 4 o     MyISAM o     unions o     Tracking o     B-trees o     s...

Configure Impersonation Authentication in IIS8 for MVC Application

Impersonation is when ASP.NET executes code in the context of an authenticated and authorized client. By default, ASP.NET does not use impersonation and instead executes all code using the same user account as the ASP.NET process, which is typically the ASPNET account. There are 5 below steps by which we can establish Impersonation configuration in our secured application environment. 1.)    Creation of Application/Proxy user where Application is hosted. 2.)    Give appropriate access to the user. 3.)    Create Database Login user on database. 4.)    Authenticate User and provide credential on IIS. 5.)    Then Configure web.config on Application.

How to add an article in Transactional Replication

If we have a set-up of Transactional Replication for Data Distribution running and wanting to add new object to replication on other server we can follow below process. To add an article In Transaction replication with PUSH Subscription