mysql - 使用 MySQL 创建循环排列的优雅方法

标签 mysql sql permutation

我得到了一组这样的结果:

| id |
| 1  |
| 2  |
| 3  |
| 4  |

我想得到

| id |
| 4  |
| 1  |
| 2  |
| 3  |

有没有什么优雅的方法可以使用 SQL 脚本实现这一点?

最佳答案

您可以使用 mod 运算符,%ORDER BY

DECLARE @maxId AS INT
SELECT @maxId = MAX(Id) FROM MyTable

SELECT id FROM MyTable
ORDER BY Id % @maxId 

你可以通过添加到Id来获得进一步的轮换,即

ORDER BY (Id + 1) % @maxId

得到你

3
4
1
2

Working SQL Fiddle(我刚刚发现它存在) http://sqlfiddle.com/#!3/a7f15/5

关于mysql - 使用 MySQL 创建循环排列的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209706/

相关文章:

mysql - 多个子查询结果进入主查询,select in select

mysql - 非法混合排序规则 MySQL 错误

sql - 在 Postgres 中搜索整数数组

php - SQL 排序规则未正确显示

algorithm - 从哈希到排列

php - Mysql if 值相等条件

mysql - 特定时间段的sql查询

mysql - 删除多个连接上的重复行

c++ - std::next_permutation 实现说明

hadoop - 如何从 apache pig 下的一个包中找到所有可能的排列