所以,假设我有这些字段
+----------+-------+---------+
| username | email | online |
+----------+-------+---------+
现在我想运行此查询,
SELECT * FROM users LIMIT 20
,非常简单,但我想首先选择online
字段值为1
的字段,然后选择所有其余字段
所以,如果我有这些记录:
user1, email@email, 0
user2, email@email, 1
user3, email@email, 0
user4, email@email, 1
选择后我应该
user2, email@email, 1
user4, email@email, 1
user1, email@email, 0
user3, email@email, 0
我知道我可以用php完成这项工作,但如果mysql可以为我做这件事,这将是额外的工作。
答案 0 :(得分:5)
非常简单,只需按顺序排序“在线”列。
select * from users order by online DESC LIMIT 20
答案 1 :(得分:3)
SELECT * FROM users
ORDER BY online DESC,username LIMIT 20;
您可能还想添加此索引
ALTER TABLE users ADD INDEX online_username_ndx (online,username);
如果除0和1之外还有其他在线值,则执行以下操作:
SELECT * FROM users
ORDER BY IF(online=1,0,1),username LIMIT 20;
答案 2 :(得分:2)
SELECT * FROM users ORDER BY online DESC, username LIMIT 20
答案 3 :(得分:2)
为什么你只能添加一个ORDER BY子句?
order by online DESC LIMIT 20