2017-04-10 2 views
-2

10 개의 항목 중 최상위를 선택하는 방법은 무엇입니까?10 개의 항목 중 가장 상위의 항목을 선택하는 방법은 무엇입니까?

SQL 테이블에 10 개의 항목 만 표시되는 의미있는 데이터가 있습니다. 예를 들어 이렇게하는 쿼리를 작성하고 싶습니다. 테이블에서 상위 10 * n을 선택하십시오.

예 : 53 개의 항목이 조건을 만족 시키므로 50 개만 보았고 마지막 3 개는 무시하고 싶습니다.

Plz 도움말. KBV

+2

질문의 질을 높이려면 어떤 연구를했는지, 그리고 이것이 어떻게 도움이되었는지, 어떻게 조사하지 않았는지에 대한 증거를 제시하십시오. 질문에 샘플 데이터가있는 샘플 표를 텍스트로 표시하십시오 (링크 된 파일이 아님). 어떤 코드를 코드 샘플로 형식화했는지 보여주십시오 (코드를 강조 표시하고 텍스트 입력 영역 위의'{} '버튼을 클릭하십시오). 문제가있는 오류 메시지를 표시하십시오. 질문에 원하는 출력을 텍스트로 표시하십시오. 자세한 내용은 http://stackoverflow.com/help/how-to-ask를 참조하십시오. – toonice

답변

0

에 대해 어떻게 :

declare @rows int; 
set @rows = ((select count(*) from table where condition)/10)*10 

select top @rows * from table where condition 
+0

안녕하십니까, Psidom, SQL은 마지막 줄에 깔끔한 @rows 오류를 보여줍니다. 그것은 정수, 또는 진짜라고 예상합니다. 그게 뭐든지 할 수 있니? –

+0

OK 메이트, 해결했습니다. 마지막 줄에 @rows 주위에 대괄호를 달아서 매력처럼 작동합니다. 고마워. –

0

하는이 시도 :

with CTE AS (
    SELECT * FROM Table WHERE Condition 
) 
Select top(((SELECT COUNT(*) FROM CTE)/10)*10) * From CTE 
0

SELECT orderField, 
     field1, 
     ... 
FROM tblTable 
WHERE condition 
ORDER BY orderField 
LIMIT 10 * numberOfGroups; 

먼저 당신이 원하는 필드를 결정 쿼리를 구성 할 때 ... 다음을 고려하십시오 . 간단한 하나의 테이블 쿼리에서 상당히 안전하게 SELECT *을 사용할 수 있지만 JOIN ed 데이터 세트를 참조하는 경우 사용할 필드를 지정하고 해당 필드에 별칭을 할당하는 것이 좋습니다.

귀하의 orderField 또는 orderFields이 무엇이든지 호출되었는지 확인하려면 *와 같은 와일드 카드 또는 명시 적으로 지정해야합니다.

위의 코드는 먼저 criteria에 부합하는 모든 레코드를 선택합니다. ORDER BY에 대해 지정한 필드에 따라 결과 목록을 정렬합니다. 참고 : 위의 내용은 테이블의 기존 값에 따라 정렬한다고 가정합니다. 계산 된 값을 기반으로 정렬해야하는 경우 다른 (사소한) 수준의 복잡성을 추가해야 할 수 있습니다.

LIMIT 그러면 정렬 된 목록에서 첫 번째로 지정된 레코드 수를 가져옵니다. LIMIT 단순히 수락 계산 값 등 numberOfGroups 코드 또는 명시 numberOfGroups 대체 값으로 미리 설정된 변수이다 2 * 2 또는 10 * numberOfGroups 등 (즉 @numberOfGroups 나란히 5 또는 10 * 5로 설정된 10 * @numberOfGroups).

질문이나 의견이 있으시면 언제든지 그에 따라 설명문을 게시하십시오.