新建t表
CREATE TABLE `t` (
`id` int NOT NULL AUTO_INCREMENT,
`c` int DEFAULT NULL,
`name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
存入資料
INSERT INTO `test`.`t` (`id`, `c`, `name`) VALUES (1, 0, 't');
INSERT INTO `test`.`t` (`id`, `c`, `name`) VALUES (2, 1, 't');
INSERT INTO `test`.`t` (`id`, `c`, `name`) VALUES (3, 2, 't');
INSERT INTO `test`.`t` (`id`, `c`, `name`) VALUES (4, 3, 't');
INSERT INTO `test`.`t` (`id`, `c`, `name`) VALUES (5, 4, 't');
c列0表示不做限制,需要將其排在最前面,並按c列由高到低排序,網上查到的大部分都是先按一列指定排序,再按另一列進行排序,與這裡的需求不太一樣。sql如下
SELECT * FROM `t` order by FIELD(c, 0, c), c desc;
結果為
1 0 t
5 4 t
4 3 t
3 2 t
2 1 t