2011-02-15 9 views
1

DB2 dailect에서만 처음 10 개 행에 대해 내림차순으로 정렬하는 최대 절전 모드 쿼리 작성 방법.DB2의 최대 절전 모드

in Db2 : 직원 테이블 20 개의 레코드가 1 ... 20부터 시작한다고 가정 해 보겠습니다.

내가 쿼리 아래 실행하는 경우 :

Select empname from emp order by desc empno fetch first 10 rows only. 

실제 출력이되어야합니다 : 10,9 ... 1. 그러나 DB2에서는 retunrs 20,19 .... 11.

모든 의견을 가장 높이 평가합니다. 이것은가 반환

Critieria crit = session.createCriteria(Employee.class); 
crit.addOrder(Order.desc("empno"); 
crit.setMaxResults(10); 
List<Employee> emps = crit.list(); 

가 유의 사항 :

감사합니다,

주권 여기

+0

DB2는 해당 질문과 어떻게 관련이 있습니까? – skaffman

+0

@Skaffman : 예, Db2 데이터베이스와 관련이 있습니다. – user569125

+0

쿼리는 DB2에서 요구하는 것과 정확히 일치합니다 : empno를 사용하여 직원을 주문한 다음 20, 19 ... 11 인 첫 번째 10을 선택하도록 요청합니다. 당신의 질문은 정확히 무엇입니까? 10,9, ... 1을 반환하는 쿼리를 원하십니까? 그것을 Hibernate Criteria 질의로 변환해야합니까? –

답변

2

는 내림차순으로 처음 10 개 행을 반환하는 최대 절전 모드 기준 쿼리를 만드는 방법입니다 직원은 내림차순으로 empno을 기반으로하므로 empno의 결과 집합을 20,19, ... 11과 같이 반환합니다. 이것은 기본 데이터베이스에 상관없이, 그리고 당신이 요구 한 것을 말할 수있는 한 그것이 무엇을 해야하는지입니다.

실제로 10,9, ... 1 (기술적으로는 내림차순으로 처음 10 개의 행이 아님)인지 알려주십시오.

편집 : 10,9, ... 1이 되려면 개인적으로 기준을 오름차순으로 변경해야합니다. 순서는 ..., 9, 10 일이 될 것입니다하지만 효과는 동일합니다

crit.addOrder(Order.asc("empno")); 

은 당신이 정말로 당신이이 그것을 불구하고 다음과 같이 추가 할 수 있습니다 ... 1은 10,9 싶은 경우 당신이 가진 데이터에 더 의존하게됩니다. 그것은 모두 당신이 데이터로 무엇을하려하는지에 달려 있지만 이것들은 당신을 올바른 길로 인도해야합니다.

Critieria crit = session.createCriteria(Employee.class); 
crit.addOrder(Order.desc("empno"); 
crit.setFirstResult(10); 
crit.setMaxResults(10); 
List<Employee> emps = crit.list(); 
+0

감사합니다.이 10,9, ... 1이 주문하고 싶습니다. – user569125

+0

20 개의 레코드가 있습니다. 처음에는 1 ... 10 개의 레코드가 표시됩니다. 정렬하면 10 ... 1. 초 표시됩니다. 다음 버튼 기준을 클릭하면 11 ... 20. 표시됩니다. 20 ....을 표시하도록 정렬합니다. 11.이 시나리오를 기반으로 위 코드가 변경됩니다. – user569125