Mysql 按特定值排序,然后旋转其余部分
我有一个疑问:Mysql 按特定值排序,然后旋转其余部分,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我有一个疑问: SELECT * FROM Users; 我从哪里回来 id name ... 1 ... 2 ... 3 ... 4 ... 现在,我想要的是根据id对我得到的结果进行排序,并根据id旋转顺序。 例如,假设我想根据ID=3进行排序。我想要的是: id name ... 3 ... 4 ... 1 ... 2 ... 这可以直接在MySQL中实现吗,或者我必须在服务器端实现吗
SELECT * FROM Users;
我从哪里回来
id name ...
1 ...
2 ...
3 ...
4 ...
现在,我想要的是根据id对我得到的结果进行排序,并根据id旋转顺序。
例如,假设我想根据ID=3进行排序。我想要的是:
id name ...
3 ...
4 ...
1 ...
2 ...
这可以直接在MySQL中实现吗,或者我必须在服务器端实现吗?您可以使用
ORDER BY CASE
WHEN id < 3 THEN id + (SELECT MAX(id) FROM users)
ELSE id
END
但请注意,mysql将无法使用索引进行排序。我认为在SQL server之外进行这种轮换是最实用的解决方案。您可以使用
ORDER BY CASE
WHEN id < 3 THEN id + (SELECT MAX(id) FROM users)
ELSE id
END
但请注意,mysql将无法使用索引进行排序。我认为在SQL server之外进行这种轮换是最实用的解决方案。您可以对两列进行排序,第一列仅在id>=3时填写: 第一列按-id排序,因此我们可以按降序排序,其中null位于末尾
您可以对两列进行排序,第一列仅在id>=3时填写: 第一列按-id排序,因此我们可以按降序排序,其中null位于末尾 我只想:
SELECT * FROM Users ORDER BY id<3,id
我只想:
SELECT * FROM Users ORDER BY id<3,id
如果用户被删除,count*不大于最大id。在maxid上排序会起作用。如果用户被删除,count*不大于最大id。在maxid上排序会起作用。按-id desc排序允许SQL使用索引吗?按-id desc排序允许SQL使用索引吗?嗯,不应该是:id<3,id?id小于3的所有记录中的顺序,其余的将不可预测。@samuil yes。。。这是我写的:-就像一个魅力。仅仅-我不确定是否有可能说服mysql使用这个顺序的索引。解释显示此查询的索引、文件排序。谢谢。我已经尝试了所有答案,而这一个似乎是最简单的解决方案。就性能而言,所有答案都表现得同样好,至少在phpmyadmin profiler中是如此。虽然我没有太多的评测经验。@dadord:据我所知,由于缺乏索引,这个查询可能会遇到大数据集的问题。请记住,如果您的数据集增长过多,那么它可能值得一看。嗯,它不应该是:id<3,id?id小于3的所有记录中的顺序,其余的将不可预测。@samuil yes。。。这是我写的:-就像一个魅力。仅仅-我不确定是否有可能说服mysql使用这个顺序的索引。解释显示此查询的索引、文件排序。谢谢。我已经尝试了所有答案,而这一个似乎是最简单的解决方案。就性能而言,所有答案都表现得同样好,至少在phpmyadmin profiler中是如此。虽然我没有太多的评测经验。@dadord:据我所知,由于缺乏索引,这个查询可能会遇到大数据集的问题。请记住,如果您的数据集增长过多,可能值得一看。