2010-07-15 5 views
2

저는 SQL에 익숙하지 않고 쉬운 일이 될 것 같습니다. 그러나 어떻게해야 될지 잘 모르겠습니다.SQL - 우선 순위에 따라 값의 첫 번째를 선택 하시겠습니까?

기본적으로 "someField"필드가 미리 정의 된 "someSet"세트에있는 테이블 A의 단일 행을 선택하려고하지만 세트의 각 값을 개별적으로 찾으려합니다. , 내가 먼저, 다음 6, 다음 5 구를보고 싶어하지만

SELECT * FROM A WHERE someField IN (5, 6, 9, 3) LIMIT 1 

예를 들어, "someSet는"5, 6, 9, 3. 나는이 유사한 쿼리를 사용하는 것이 포함되어 가정 해 봅시다 마지막으로 아직 행이 발견되지 않은 경우 3입니다. 그것은 다음과 같이 것 별도의 쿼리로 글 :

SELECT * FROM A WHERE someField = 5 LIMIT 1 
(if no results returned) 
SELECT * FROM A WHERE someField = 6 LIMIT 1 
(if no results returned) 
SELECT * FROM A WHERE someField = 9 LIMIT 1 
(if no results returned) 
SELECT * FROM A WHERE someField = 3 LIMIT 1 

분명히 4 개 쿼리 (이론적으로 무한 쿼리) 단일 쿼리에이를 만들 수있는 방법이 있습니다, 매우 우아하지를 사용하고 계십니까?

답변

6

당신은 그런 식으로 사용될 수 BY ORDER 몰랐어요,

SELECT * FROM A WHERE someField IN (5, 6, 9, 3) 
ORDER BY FIELD(someField, 5, 6, 9, 3) 
LIMIT 1 
+0

쿨 할 수 있습니다. 감사. – Daniel

+0

+1 나에게서. 매일 SQL에 관해 새로운 것을 배울 것 같습니다. – Borealid

+0

멋지다, 환상적, 굉장하다 ... 나는 단지 +1 이상의 것을 줄 수 있기를 바란다. –

관련 문제