【发布时间】:2012-05-25 22:59:02
【问题描述】:
我有一个具有以下(简化)结构的表:
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 的一种舒适的方法,请告诉我。
【问题讨论】:
-
因为我还在纠结把它转移到 CakePHP,我打开了同样的问题,这里只针对 Cake:stackoverflow.com/questions/10798183/…
标签: mysql sql cakephp select sql-order-by