Ответ 1
Это означает группировку по первому столбцу независимо от того, что он назвал. Вы можете сделать то же самое с ORDER BY
.
Кто-то отправил мне SQL-запрос, в котором предложение GROUP BY
состояло из инструкции: GROUP BY 1
.
Это должно быть опечатка правильно? Ни в одной колонке не указан псевдоним 1. Что это может означать? Правильно ли я предполагаю, что это должна быть опечатка?
Это означает группировку по первому столбцу независимо от того, что он назвал. Вы можете сделать то же самое с 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
.
Примечание: числа в ORDER BY и GROUP BY всегда начинаются с 1, а не с 0.
Помимо группировки по имени поля, вы также можете группировать по порядковому номеру или положению поля в таблице. 1 соответствует первому полю (независимо от имени), 2 - второе и т.д.
Это обычно не рекомендуется, если вы группируете что-то конкретное, поскольку структура таблицы/представления может измениться. Кроме того, может быть сложно быстро понять, что делает ваш SQL-запрос, если вы не запомнили поля таблицы.
Если вы возвращаете уникальный набор или быстро выполняете временный поиск, это хороший сокращенный синтаксис для сокращения набора текста. Если вы планируете снова выполнить запрос в какой-то момент, я рекомендую заменить его, чтобы избежать путаницы и непредвиденных осложнений (из-за изменений схемы).
Он будет группироваться по первому полю в предложении 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..
, конечно, это удобно для нас, но вам нужно обратите внимание на это условие, результат может быть не тем, что вы хотите, если кто-то изменил ваши столбцы выбора и не визуализировал