Что означает предложение SQL "GROUP BY 1"?


кто-то послал мне SQL-запрос, где GROUP BY предложение состояло из утверждения:GROUP BY 1.

Это должно быть опечатка да? Ни одному столбцу не присваивается псевдоним 1. Что бы это могло значить? Правильно ли я предполагаю, что это должно быть опечатка?

6 138

6 ответов:

это означает группировать по первому столбцу независимо от того, как он называется. Вы можете сделать то же самое с ORDER BY.

SELECT account_id, open_emp_id
         ^^^^        ^^^^
          1           2

FROM account
GROUP BY 1;

в вышеуказанный запрос GROUP BY 1 относится к first column in select statement что account_id.

вы также можете указать в ORDER BY.

Примечание: число по порядку и группе всегда начинается с 1, а не с 0.

в дополнение к группировке по имени Поля, вы также можете группировать по порядковому номеру или позиционировать поле.

это обычно не рекомендуется, если вы группируете что-то конкретное, так как структура таблицы / представления может измениться; кроме того, ее труднее читать (кредит:черт). Однако если вы возвращаете уникальный набор чего-то, то это нормально.

Он будет группироваться по первому полю в предложении select

он будет группироваться по позиции столбца, которую вы ставите после предложения group by.

например, если вы запустите 'SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1' он будет группироваться по SALESMAN_NAME.

один риск при этом, если вы запустите'Select *' а вы почему-то воссоздать таблицу со столбцами в другом порядке, это даст вам другой результат, чем вы ожидаете.

это означает, что группа sql по 1-му столбцу в вашем предложении select, мы всегда используем это GROUP BY 1 вместе с ORDER BY 1, кроме того, вы также можете использовать такой GROUP BY 1,2,3.. конечно, это удобно для нас, но вы должны обратить внимание на условие, что результат может быть не то, что вы хотите, если кто-то изменил свой выбор столбцов, и это не наглядно.