나는 데이터 테이블 번호가있는 경우 :SQL GROUP BY와 집계
+------+------+------+------+
| colA | colB | colC | colD |
+------+------+------+------+
| 1 | 2 | 3 | 4 |
| 1 | 2 | 9 | 5 |
+------+------+------+------+
및 수행
select colA, colB, colC, MAX(colD) FROM Numbers GROUP BY colA, colB;
가 나는 그것이 colA, colB
에 의해 행 2. 그룹을 반환해야한다고 생각하고 선택합니다 colD
에서 가장 큰
반환하려면 colC로 그룹화해야하기 때문에이 기능이 작동하지 않습니다.
왜? 내가하려는 일을하는 또 다른 방법이 있습니까?
colA
과 colB
에서 행이 동일하지만 colD
에서 가장 큰 행을 원합니다.
이것은 NATURAL JOIN의 좋은 사용 사례입니다. – Benoit
감사합니다. 그리고 질문을 리팩토링 할 때 Benoit에게 감사드립니다 :) 둘 모두에서 열 이름이 같으면 실제로 모든 이름을 "on"으로 지정해야합니까? – momomo
@Hamidam 그렇습니다. 그 중 하나가 기본 키가 아닌 한 모두 'ON' 절에 나열되어 있어야합니다. 예를 들어 'colA'가 유일한 키 값이라면, 당신은'ON tbl.colA = g.colA'를 할 수 있지만, 고유하지 않으므로 고유 한 값을 만들기 위해 필요한만큼의 열을 결합해야합니다. colA , colB, MAX (colD)' –