Кто - то прислал мне запрос SQL , где GROUP BY
положение состояло из заявления: GROUP BY 1
.
Это должно быть опечатка правильно? В столбце нет псевдонима 1. Что бы это могло значить? Правильно ли я предполагаю, что это опечатка?
Кто - то прислал мне запрос SQL , где GROUP BY
положение состояло из заявления: GROUP BY 1
.
Это должно быть опечатка правильно? В столбце нет псевдонима 1. Что бы это могло значить? Правильно ли я предполагаю, что это опечатка?
Ответы:
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-запрос, если вы не запомнили поля таблицы.
Если вы возвращаете уникальный набор или быстро выполняете временный поиск, это хороший сокращенный синтаксис для сокращения набора текста. Если вы планируете снова выполнить запрос в какой-то момент, я бы рекомендовал заменить его, чтобы избежать путаницы и непредвиденных осложнений (из-за изменений схемы).
Он будет сгруппирован по первому полю в предложении выбора
Это означает, что sql group by 1st column в вашем предложении select, мы всегда используем это GROUP BY 1
вместе с ORDER BY 1
, кроме того, вы также можете использовать это GROUP BY 1,2,3..
, конечно, это удобно для нас, но вы должны обратить внимание на это условие, результат может быть не тем, что вы хотите, если кто-то изменил ваши столбцы выбора, и это не визуализируется
Он будет группироваться по положению столбца, которое вы ставите после предложения group by.
например, если вы запустите ' SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1
', он будет сгруппирован по SALESMAN_NAME
.
Это может привести к риску, если вы запустите ' Select *
' и по какой-то причине пересоздаете таблицу со столбцами в другом порядке, это даст вам другой результат, чем вы ожидаете.