php - MySQL对单个字段进行多顺序排序

标签 php mysql

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

第一条规则是按状态排序。按以下顺序排列:事件、非事件、已合并、促销 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/

相关文章:

mysql - 高级 MySQL 查询

mysql - 跨多个表的 SQL 查询

PHP:使用来自 php 的参数调用 javascript 函数

php - Laravel 配置错误 : The cipher and/or key length are invalid

php - Wordpress: move 媒体文件夹

mysql - 将 CASE WHEN 与 GROUP BY 一起使用

mysql - 是否有任何免费工具可以自动从现有的 html 表单创建数据库(首选 mysql)表?

php - SQL注入(inject)测试-mysql_query

php - 使用 MySQL 套接字文件的自定义位置设置 PHP - mysql.default_socket 与 MYSQL_SOCKET

c# - C# 中有类似 PHP 的可选参数吗?