我遇到了一种情况,我想根据第二列的值按升序或降序对列进行排序(本质上,如果 A 列是奇数,则按升序对 B 列进行排序,否则按降序排序)。例子:
A | 乙 |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
2 | 4 |
2 | 5 |
2 | 6 |
3 | 7 |
3 | 8 |
3 | 9 |
将被排序为
A | 乙 |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
2 | 6 |
2 | 5 |
2 | 4 |
3 | 7 |
3 | 8 |
3 | 9 |
这是否可以在单个 SQL 查询中实现,或者我是否必须在数据库之外解决这个问题?我有大约 60 个不同的 A 值,因此为每个可能的 A 值编写单独的查询并不是一个可行的选择。
我尝试使用“ORDER BY b if (A%2=1, ASC, DESC)”,这(毫不奇怪)不起作用。
在您的特定情况下,对于 a 的奇数值,将 b 映射为:
稍微更紧凑和神秘:
对于无法以任何简单方式进行此类映射的类型(例如字符串),另一种选择是将 asc 或 desc 排序“快捷化”为:
小提琴