2011-04-13 47 views
1

,如果我有一個像Mysql的WHERE可選

id || value_a 

我要選擇5項,其中value_a = 1 很簡單,到目前爲止,但現在如果有比5的結果少了,我想一個示例表仍然有5個結果。所以如果有3個條目的value_a = 1,那麼我想要得到3個結果和2個其他值,其中value_a可以是任何值。我怎樣才能以最好的方式實現這一目標?

回答

4

您可以通過比較計算的結果排序,像這樣:

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

非常好的使用索引!工作正常,現在不能接受答案,它告訴我,我必須等待8分鐘,但會做。 – Flo 2011-04-13 15:09:19

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有效