首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL将单个字段按多个顺序排序

问MySQL将单个字段按多个顺序排序
EN

Stack Overflow用户
提问于 2010-11-15 19:40:19
回答 2查看 267关注 0票数 2

您好,我正在尝试对具有多个订单的字段进行排序,例如,这是我的表

第一条规则是按状态排序。按以下顺序排列:活动、非活动、合并、促销A、促销B、促销C、促销D、失效

一旦它们像这样在这些类别中的每一个中排序,第二个规则按以下顺序排列:传统,原生,拯救,嗯,导航

第三条规则是在这些类别中按州排序,按字母A-Z排序

如果我不能在mysql中做到这一点,那么我可以在php中做到这一点吗?使用排序函数

我只需要一个想法或技巧,我可以如何做到这一点,谢谢帮助

代码语言:javascript
复制
-- ----------------------------
-- Table structure for `users`
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `status` varchar(255) DEFAULT NULL,
  `category` varchar(255) DEFAULT NULL,
  `state` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO users VALUES ('1', 'testing', 'Inactive', 'Traditional', 'AZ');
INSERT INTO users VALUES ('2', 'testing 2', 'Merged', 'Native', 'AK');
INSERT INTO users VALUES ('3', 'testing 3', 'Promo A', 'Salvation', 'DC');
INSERT INTO users VALUES ('4', 'testing 4', 'Promo B', 'Salvation', 'PH');
INSERT INTO users VALUES ('5', 'testing 5', 'Promo C', 'Amm', 'PO');
INSERT INTO users VALUES ('6', 'testing 6', 'Promo D', 'Mai', 'AZ');
INSERT INTO users VALUES ('7', 'testing 7', 'Defunct', 'Nav', 'AK');
INSERT INTO users VALUES ('8', 'test 8', null, 'ABc', 'Dd');
INSERT INTO users VALUES ('9', 'test 9', 'asd', null, null);
INSERT INTO users VALUES ('10', 'test 10', 'Active - Full Membership', null, null);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-15 19:58:57

用例

代码语言:javascript
复制
select 
  *
from
  users
order by
(
case status
  when 'Active'   then 1
  when 'Inactive' then 2
  when 'Merged'   then 3
  when 'Promo A'  then 4
  when 'Promo B'  then 5
  when 'Promo C'  then 6
  when 'Promo D'  then 7
  when 'Defunct'  then 8
  else 9999
end
),
(
case category
  when 'Traditional' then 1
  when 'Native'      then 2
  when 'Salvation'   then 3
  when 'Amm'         then 4
  when 'Nav'         then 5
  else 9999
end
), state;
票数 2
EN

Stack Overflow用户

发布于 2010-11-15 19:44:03

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

https://stackoverflow.com/questions/4183967

复制
相关文章

相似问题

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