2011-04-13 3 views
1

내가 만약 내가 5 이하의 결과가있는 경우 value_a 1. 아주 간단한 지금까지,하지만 지금은, 내가 원하는 = 5 개 항목에를 선택합니다MySQL은 WHERE 옵션

id || value_a 

같은 예를 들어 테이블 여전히 5 개의 결과가 있습니다. 그래서 value_a = 1 인 항목이 3 개 있다면 value_a가 될 수있는 3 개의 결과와 2 개의 다른 항목을 가져오고 싶습니다. 최선의 방법으로 이것을 어떻게 달성 할 수 있습니까?

답변

4

당신은과 같이, 비교 계산 결과로 주문할 수 있습니다

SELECT stuff FROM table ORDER BY (value_a = 'value you want') DESC LIMIT 5 
+0

아주 좋은에 인덱스를 사용합니다! 괜찮아요, 캔트 지금 대답을 받아, 그것은 8 분을 기다려야한다고 말해,하지만 그때 할 것입니다. – Flo

1
(
SELECT * 
FROM mytable 
WHERE value_a = 1 
LIMIT 5 
) 
UNION ALL 
(
SELECT * 
FROM mytable 
WHERE value_a <> 1 
LIMIT 5 
) 
ORDER BY 
     value_a = 1 DESC 
LIMIT 5 

value_a 효율적으로