Mysql WHERE是可选的

问题描述

| 如果我有一个示例表
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
上的索引