在MySQL中,假设我有一个表:
----------------------
| Price | ProductType |
----------------------
8.5 | Foodstuff
8.5 | Mobile
147 | Application
2 | Mobile
8.5 | Electronic
8.5 | Mobile
在这种情况下,如果I ORDER BY Price, ProductType
,它通常会显示为:
----------------------
| Price | ProductType |
----------------------
2 | Mobile
8.5 | Electronic
8.5 | Foodstuff
8.5 | Mobile
8.5 | Mobile
147 | Application
现在的问题是:
- 我可以自己定制
ORDER
吗?(例如,哪个先来,哪个后来(
例如,如何编写MySQL Query
以获得如下结果:
----------------------
| Price | ProductType |
----------------------
2 | Mobile
8.5 | Electronic <- 1st in Order
8.5 | Mobile <- 2nd in Order
8.5 | Mobile <- ..
8.5 | Foodstuff <- 3rd in Order
147 | Application
请关注8.5
价格行,在这个示例中(在Price
列的第一个Order By
之后(,然后显然我想显示:首先是Electronic
,然后是Mobile
,然后是Foodstuff
。在MySQL
中可能吗?
使用FIELD
ORDER BY Price, FIELD(ProductType,'Electronic','Mobile','Foodstuff')
- SQLFiddle演示
只需在表中为自定义订单添加第三列(INT(,即可将其命名为smart。然后你可以通过以下方式订购:
ORDER BY custom_order
如果你仍然希望价格优先于定制订单,你可以进行查询:
ORDER BY Price, custom_order
你只是不能让MySQL猜测你想要安排的顺序,所以替代解决方案应该是JW建议的。其中指定查询中的实际订单。然而,对于大表和动态数据,我会推荐我的解决方案。
然后希望你对数据库有一个聪明的管理,这样你就可以很容易地按照你想要的方式重新排序项目。。。我已经成功地进行了许多数据库管理,并喜欢使用AJAX和jQuery-Sortable进行简单的拖放排序。