首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL自定义订单(同样)按列排序的输出

问MySQL自定义订单(同样)按列排序的输出
EN

Stack Overflow用户
提问于 2013-01-07 07:14:31
回答 2查看 327关注 0票数 0

在MySQL中,假设我有一张桌子:

代码语言:javascript
复制
 ----------------------
| Price | ProductType |
 ----------------------
8.5     | Foodstuff
8.5     | Mobile
147     | Application
2       | Mobile
8.5     | Electronic
8.5     | Mobile

在这种情况下,如果我ORDER BY Price, ProductType,它通常会显示为:

代码语言:javascript
复制
 ----------------------
| Price | ProductType |
 ----------------------
2       | Mobile
8.5     | Electronic
8.5     | Foodstuff
8.5     | Mobile
8.5     | Mobile
147     | Application

现在的问题是:

  • 我可以自己定制ORDER吗?(例如,哪个是第一位,哪个是第二位)

例如,如何编写MySQL Query以获得如下结果:

代码语言:javascript
复制
 ----------------------
| 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 By on Price列之后),显然我想先显示:Electronic,然后是Mobile,然后是Foodstuff。在MySQL中有可能吗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-07 07:17:48

使用FIELD

代码语言:javascript
复制
ORDER BY Price, FIELD(ProductType,'Electronic','Mobile','Foodstuff')
票数 5
EN

Stack Overflow用户

发布于 2013-01-07 07:17:51

只需为自定义订单在表中添加第三列(INT),就可以将其命名为智能项。然后你就可以按这个点:

代码语言:javascript
复制
ORDER BY custom_order

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

代码语言:javascript
复制
ORDER BY Price, custom_order

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14191483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档