where a.ca_id = '103010' group by a.bo_table order by bn_datetime desc for orderby_num() between 1 and 4
위와 같은 쿼리가 mysql 에서는 되지만 cubrid 최신 버전에서는 안됩니다.
목적은 bo_table 컬럼만 중복제거 하려는 목적입니다
오류 메세지는 다음과 같습니다.
시멘틱: a.bo_subject은(는) 단일 값이 아닙니다. aggregate 질의어 내에 나타난 속성은 "group by" 절 내에 나타나야 합니다.
어떻게 해야하죠?
CUBRID에서는 group by 사용시 group by 에 영향을 줄 수 있는 모든 필드가 group by 에 명시되어야 합니다. 따라서 select 절에 명시된 필드가 다 들어가야 합니다. 말씀하신 것처럼 bo_table 만 unique 하게 하려면 다른 필드들에 대하여 적절한 원칙을 가지고 질의가 되어야 할 것입니다. 즉, bo_table 이 1인 것에 대하여 bo_subejct 가 1과 2의 값을 가진다면 이중에 하나만 결과로 나와야 하는데 이렇게 하시려면 서브 질의를 이용하거나, 질의 조정이 꽤 필요합니다. 더군다나 정렬은 select 절에 없는 다른 필드를 이용해 정렬이 되고 있으니 조금 시간을 가지고 분석해 봐야 할 것 같습니다.
분석해 보고 적절한 질의를 올려드리도록 하겠습니다.