我有一个具有以下(简化)结构的表:
INT id,
INT type,
INT sort
我需要的是一个 SELECT 以某种方式对我的数据进行排序,以便:
- 相同类型的所有行都按顺序排列,
sort
内部按升序排序,并且 - 一种类型的所有“块”都按它们的最小值排序
sort
。
例子:
如果表格如下所示:
| id | type | sort |
| 1 | 1 | 3 |
| 2 | 3 | 5 |
| 3 | 3 | 1 |
| 4 | 2 | 4 |
| 5 | 1 | 2 |
| 6 | 2 | 6 |
查询应该像这样对结果进行排序:
| id | type | sort |
| 3 | 3 | 1 |
| 2 | 3 | 5 |
| 5 | 1 | 2 |
| 1 | 1 | 3 |
| 4 | 2 | 4 |
| 6 | 2 | 6 |
我希望这足够清楚。
在我看来,这应该是一个非常普遍的要求,但我没有找到任何足够接近的示例,无法自行将其转移到我的用例中。我想我至少不能避免一个子查询,但我自己并没有弄清楚。
任何帮助表示赞赏,在此先感谢。
顺便说一句:我将在 CakePHP 2.1 中使用这个查询,所以如果您知道使用 Cake 的一种舒适的方法,请告诉我。