0

在 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吗?(例如,哪一个先来,哪一个第二)

例如,如何编写 aMySQL 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第一个列之后),那么显然我想显示:首先,然后,然后。有可能吗?Order ByPriceElectronicMobileFoodstuffMySQL

4

2 回答 2

5

利用FIELD

ORDER BY Price, FIELD(ProductType,'Electronic','Mobile','Foodstuff')
于 2013-01-07T07:17:48.207 回答
2

只需在您的表格中为您的自定义订单添加第三个 (INT) 列,将其命名为聪明的名称。然后您可以按以下顺序订购:

ORDER BY custom_order

如果您仍然希望价格优先于自定义订单,您可以进行查询:

ORDER BY Price, custom_order

您只是不能让 MySQL 猜测您想要安排的顺序,因此替代解决方案应该是 JW 建议的解决方案。您在其中指定查询中的实际顺序。但是,对于大型表和动态数据,我会推荐我的解决方案。

然后希望您对数据库有一个聪明的管理,这样您就可以轻松地以您想要的方式重新排序项目......我已经成功地进行了许多数据库管理,并且喜欢使用 AJAX 和 jQuery Sortable 进行简单的拖放重新排序。

于 2013-01-07T07:17:51.677 回答