0

我的桌子:

id | elite | pos
1  |   0   |  9  
2  |   1   |  8
3  |   0   |  7
4  |   1   |  6
5  |   0   |  5
6  |   1   |  4
7  |   0   |  3
8  |   1   |  2
9  |   0   |  1
10 |   1   |  0

我有这个简单的查询

SELECT id, elite FROM tbl LIMIT 0, 5 ORDER BY pos DESC

它将返回id 1 2 3 4 5. 随着时间的推移,这些价值观会发生变化。结果的计数必须始终为 5,但是如果结果中至少有一个id带有 的elite >= 1,则结果不能再包含id带有elite1值的 a。所以结果不能包含id多个elite >= 1.

这可能在查询中吗?

4

1 回答 1

1

您可以使用UNION组合两个查询,如下所示:

(SELECT * FROM tbl WHERE elite = 1 LIMIT 1)
UNION
(SELECT * FROM tbl WHERE elite = 0)
ORDER BY pos DESC LIMIT 5

它会给出你需要的结果。查看有关 UNION 的 Mysql参考

于 2012-12-07T08:34:17.143 回答