이 비트가 하나 이상입니다. 나는 3 테이블을 조인 다음 쿼리를 실행하려고합니다.'Order By'절에있는 열을 주장하는 쿼리는 'Group by'절의 열과 일치합니다.
Select t3.id, t3.name, t3.phone_no, t1.reg_dtm, count(t1.reg_dtm)
from tableA t1, tableB t2, tableC t3
Where t1.id = t2.id
And t2.id = t3.id
Group by t3.id, t3.name, t3.phone_no, t1.reg_dtm
Order by t2.id, t1.reg_dtm
위의 쿼리는 다음과 같은 오류를
ORA-00979: not a GROUP BY expression
를 반환하지만, GROUP BY 절의 모든 조항에 의해 순서가되도록 내가 그것을 변경하는 경우 다음 작동합니다.
Select t3.id, t3.name, t3.phone_no, t1.reg_dtm, count(t1.reg_dtm)
from tableA t1, tableB t2, tableC t3
Where t1.id = t2.id
And t2.id = t3.id
Group by t3.id, t3.name, t3.phone_no, t1.reg_dtm
Order by t3.id, t3.name, t3.phone_no, t1.reg_dtm
정확히 이유는 무엇입니까?
첫 번째 쿼리의 order by
문에 표시된 t2.id가 group by
문이 아니기 때문에 문제가 발생한 것 같습니다. 이것이 원인이라면 왜 그렇게 중요합니까? 나는 전에 이것을 경험 한 적이 없으며 성명서에 의한 그룹과 명령에 의한 어떤 관계도 있다고 생각하지 않았습니다.
나는 위의 테스트를 Oracle 10G와 MySQL에서 테스트했습니다. 사전에
감사 ORDER BY 절은 SELECT 문에 다른 모든 후 실행
첫 번째 SQL 문에 오타가 있습니다. 내 대답을보십시오, (먼 곳). –
암시 적 구문을 다시 사용하면 안됩니다. SQL 반 패턴입니다. 우발적 인 십자가 조인의 대상이되며 나중에 왼쪽 조인으로 변경하려는 경우 유지 관리하기가 더 어렵습니다. 거의 20 년이 지났지 만 그것은 단지 잘못된 구문입니다. – HLGEM