[mysql] SQL 절“GROUP BY 1”은 무엇을 의미합니까?

누군가가 GROUP BY절이 다음 문장으로 구성된 SQL 쿼리를 보냈습니다 GROUP BY 1.

오타일까요? 별명이없는 열이 없습니다. 1. 이것은 무엇을 의미 할 수 있습니까? 이것이 오타 여야한다고 가정 할 수 있습니까?



답변

그것은 무엇을 불렀는지에 관계없이 첫 번째 열을 기준으로 그룹화하는 것을 의미합니다. 당신도 같은 작업을 수행 할 수 있습니다 ORDER BY.


답변

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

FROM account
GROUP BY 1;

위의 쿼리 GROUP BY 1first column in select statement입니다
account_id.

에서 지정할 수도 있습니다 ORDER BY.

참고 : ORDER BY 및 GROUP BY의 숫자는 항상 0이 아닌 1로 시작합니다.


답변

필드 이름을 기준으로 그룹화하는 것 외에도 테이블 내에서 필드의 서수 또는 위치를 기준으로 그룹화 할 수 있습니다. 1은 이름에 관계없이 첫 번째 필드에 해당하고 2는 두 번째 필드에 해당합니다.

테이블 / 뷰 구조가 변경 될 수 있기 때문에 특정 항목으로 그룹화하는 경우 일반적으로 좋지 않은 조언입니다. 또한 테이블 필드를 암기하지 않은 경우 SQL 쿼리가 수행하는 작업을 빠르게 이해하기 어려울 수 있습니다.

고유 한 세트를 반환하거나 임시 조회를 신속하게 수행하는 경우 타이핑을 줄이는 좋은 속기 구문입니다. 어떤 시점에서 쿼리를 다시 실행하려는 경우 향후 혼동과 예기치 않은 합병증 (구성표 변경으로 인해)을 피하기 위해 쿼리를 교체하는 것이 좋습니다.


답변

select 절에서 첫 번째 필드를 기준으로 그룹화합니다.


답변

즉, select 절의 첫 번째 열 sql 그룹을 의미합니다. 우리는 항상 이것 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 *‘ 를 실행 하고 어떤 이유로 열이 다른 테이블을 다른 순서로 다시 작성하면 예상과 다른 결과를 제공합니다.


답변