2013-08-10 3 views
0

주어진 목록의 인덱스를 기반으로 데이터베이스 행을 가져올 수 있습니까?SQL에서 지정된 목록의 첫 번째 가져 오기

테이블을 가지고 '스토리지'라고 부를 수 있습니다. 저장소에는 모든 종류의 문자열 값이있을 수 있습니다. 아래 목록은 스토리지의 가치 목록입니다. 나는 테이블에 어떤 것이 있는지 모른다. 하지만 주어진 목록의 순서에 따라 처음으로 발견 된 값을 선택합니다

목록 :

  1. foo는
  2. 는 foobar
  3. barfoo

1.Foo 및 2.bar는 존재하지 않지만 3.foobar는 존재합니다. 3.foobar 내가 가져오고 싶어 하나입니다.

내 질문에 충분히 명확하다.

미리 감사드립니다.

+2

"잘만되면 내 질문에 충분히 명확하다." 음 ... 아니요;) –

+1

아마도 어휘에 관해 더 정확한 질문을 편집해야합니다. 데이터베이스 ≠ 테이블 ≠ 목록 ≠ 행 –

+0

@SylvainLeroux 편집보기 – John

답변

1
select col 
from your_table 
where col in('foo','bar','foobar') 
order by field(col, 'foo','bar','foobar') 
limit 1 

FIELD() 함수는 목록에서 값의 인덱스를 반환합니다.

+1

정말 초능력이 있어야합니다. 나는 당신의 SQL 숙달에 대해서 말하고있는 것이 아니라, 눈 깜짝 할 사이에 모든 질문을 이해할 수있는 당신의 능력에 대해 말하고 있습니다 : D –

+0

@ juergen-d 그건 효과가있는 것 같습니다! :) 당신은 '필드 (칼럼 등)에 의한 순서가 실제로 무엇인지 말해 주시겠습니까?' – John

+1

@ 존 필자는 Juergen의 대답을 편집하여 FIELD()의 문서에 대한 링크를 제공했습니다. 보시다시피, 이것이 정확한 * 기능입니다! –

관련 문제