SQL :.

2010-04-21 4 views
3
한 테이블 T (ID 정수, 기본 키 (ID)
내가 매개 변수가있는 쿼리를가하고자한다

ID가 주어진 다음 ID를 선택하는 방법이, 지정된 ID I :
이 돌아갑니다 연속 된 다음 아이디,
SQL :.

CREATE PROCEDURE dbo.ProcName 
(
    @ID INTEGER 
) 
AS 
SELECT TOP 1 id 
FROM table 
WHERE id > @ID 
ORDER BY id 
+0

SQL의 어떤 특정한 맛? – Guffa

답변

6

당신은을 통해 작은 ID를 선택할 수 있습니다 : 난 T에 가장 큰 ID를 = 경우 는 쿼리

이 나타납니다
+0

젠장, 천천히 손가락. –

+0

고마워, 정확히 내가 뭘 찾고 있었는지, 이제 max/min이 문자열에서 작동하는지 확인해야한다. –

+0

@Marcin : 최대 및 최소는 문자열에서 작동하지만 텍스트 비교를 수행합니다. 숫자 값을 문자열로 저장 한 경우 검색어의 숫자로 변환해야합니다 (예 : '2'> '10'). – Guffa

1

것은 당신이 찾고있는 것은 무엇 (순환) T에서 가장 작은 ID를 반환해야합니다 값 @i (있는 경우) 및 가장 작은 ID는 다음 최대 값을 얻습니다.

select max(id) 
from (
    select top 1 id 
    from T 
    where id > @i 
    order by id 
    union all 
    select top 1 id 
    from T 
    order by id 
) x 

아니면 :

select max(id) 
from (
    select min(id) as id 
    from T 
    where id > @i 
    union all 
    select min(id) 
    from T 
) x 
+0

OP는 가장 큰 ID에 도달하면 (주기적으로) 가장 작은 ID를 다시 반환하려고합니다 ... – AdaTheDev

+0

id> = max 인 경우이 회의는 OP의 주기적 행동 방식과 어떻게 다릅니 까? –