嗨,我正在尝试对具有多个订单的字段进行排序,例如这是我的表格
第一条规则是按状态排序。按以下顺序排列:事件、非事件、已合并、促销 A、促销 B、促销 C、促销 D、已失效
一旦它们在每个类别中按如下方式排序,第二条规则将按以下顺序排列:传统、本土、救赎、Amm、导航
第三条规则是按州在这些类别中排序按字母顺序 A-Z
如果我不能在 mysql 中执行此操作,那么我可以在 php 中执行此操作吗?具有排序功能
我只需要一个想法或技巧,如何做到这一点,谢谢您的帮助
-- ----------------------------
-- 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);
最佳答案
用例
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;
关于php - MySQL对单个字段进行多顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4183967/