4
여기 내 문제를 설명하기 위해 샘플 테이블의 siteid 값. 내 시도는 다음과 같습니다.자체 테이블을 조인 할 때 중복 행을 제외하는 방법
mysql> select * from test T1
-> LEFT OUTER JOIN test T2 on T1.siteid = T2.siteid and T1.id <> T2.id;
+----+--------------+--------+------+--------------+--------+
| id | type | siteid | id | type | siteid |
+----+--------------+--------+------+--------------+--------+
| 1 | First Visit | 100 | 2 | Second Visit | 100 |
| 2 | Second Visit | 100 | 1 | First Visit | 100 |
| 3 | First Visit | 300 | NULL | NULL | NULL |
| 4 | First Visit | 400 | NULL | NULL | NULL |
| 5 | Second Visit | 500 | NULL | NULL | NULL |
| 6 | Second Visit | 600 | NULL | NULL | NULL |
+----+--------------+--------+------+--------------+--------+
이것은 기본적으로 내가 찾는 첫 번째 2 행을 제외하고는 결과입니다. 그 중 하나를 제거하고 싶습니다. 그래서, 나는 다음을 시도했다 :
mysql> select * from test T1
-> LEFT OUTER JOIN test T2 on T1.siteid = T2.siteid and T1.id <> T2.id
-> GROUP BY T1.siteid;
+----+--------------+--------+------+--------------+--------+
| id | type | siteid | id | type | siteid |
+----+--------------+--------+------+--------------+--------+
| 1 | First Visit | 100 | 2 | Second Visit | 100 |
| 3 | First Visit | 300 | NULL | NULL | NULL |
| 4 | First Visit | 400 | NULL | NULL | NULL |
| 5 | Second Visit | 500 | NULL | NULL | NULL |
| 6 | Second Visit | 600 | NULL | NULL | NULL |
+----+--------------+--------+------+--------------+--------+
정확하게 내가 찾고있는 출력이다. 그러나 이것이 내가 GROUP BY를 사용하는 표준 방법이 아니며 위의 명령문이 ORACLE에서 실패 함을 알게되었습니다
일반 SQL 오류입니다.
ORA-00979 : 표현 BY하지 않는 GROUP
사람이 마지막 테이블과 같은 결과를 얻을 수 및 그 ORACLE와 함께 작동하는 방법에 대한 도움을 제공 할 수 있습니까?