我的表:
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
elite
具有1
值。因此,结果不得包含id
多个elite >= 1
。
这可以在查询中吗?
答案 0 :(得分:1)
您可以使用UNION
组合两个查询,例如:
(SELECT * FROM tbl WHERE elite = 1 LIMIT 1)
UNION
(SELECT * FROM tbl WHERE elite = 0)
ORDER BY pos DESC LIMIT 5
它将提供您需要的结果。 查看UNIONs
的Mysql参考