问题描述
|
如果我有一个示例表
id || value_a
我想选择5个条目,其中value_a = 1。
到目前为止非常简单,但是现在如果结果少于5,我希望仍然有5个结果。因此,如果有3个value_a = 1的条目,那么我想获得这3个结果和另外2个结果,其中value_a可以是任何值。我怎样才能最好地做到这一点?
解决方法
您可以按照比较计算的结果进行排序,如下所示:
SELECT stuff FROM table ORDER BY (value_a = \'value you want\') DESC LIMIT 5
,(
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
上的索引