Mysql WHERE可选

时间:2011-04-13 15:02:18

标签: mysql

如果我有一个像

这样的示例表
id || value_a

我想选择5个条目,其中value_a = 1。 到目前为止非常简单,但现在如果结果少于5,我想仍然有5个结果。因此,如果有3个条目的value_a = 1,那么我想得到那3个结果和2个其他的值,其中value_a可以是任何东西。我怎样才能以最好的方式实现这一目标?

2 个答案:

答案 0 :(得分:4)

您可以通过比较计算的结果进行排序,如下所示:

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

答案 1 :(得分: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上的索引