Mysql – Why do we use Group by 1 and Group by 1,2,3 in SQL query

group byMySQLplsqlsyntax

In SQL queries, we do use Group by clause to apply aggregate functions.

  • But what is the purpose behind using numeric value instead of column
    name with Group by clause? For example: Group by 1.

Best Answer

This is actually a really bad thing to do IMHO, and it's not supported in most other database platforms.

The reasons people do it:

  • they're lazy - I don't know why people think their productivity is improved by writing terse code rather than typing for an extra 40 milliseconds to get much more literal code.

The reasons it's bad:

  • it's not self-documenting - someone is going to have to go parse the SELECT list to figure out the grouping. It would actually be a little more clear in SQL Server, which doesn't support cowboy who-knows-what-will-happen grouping like MySQL does.

  • it's brittle - someone comes in and changes the SELECT list because the business users wanted a different report output, and now your output is a mess. If you had used column names in the GROUP BY, order in the SELECT list would be irrelevant.

SQL Server supports ORDER BY [ordinal]; here are some parallel arguments against its use: