目录

1、创建测试表和添加数据

2、一般的排序写法

3、通过mysql的FIELD()函数指定排序

3.1定义和用法

3.2 语法

3.3 参数值

3.4 实际写法demo 


1、创建测试表和添加数据

/*
 Navicat Premium Data Transfer

 Source Server         : test
 Source Server Type    : MySQL
 Source Server Version : 50725
 Source Host           : localhost:3306
 Source Schema         : test

 Target Server Type    : MySQL
 Target Server Version : 50725
 File Encoding         : 65001

 Date: 22/04/2022 14:24:01
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for field_data
-- ----------------------------
DROP TABLE IF EXISTS `field_data`;
CREATE TABLE `field_data`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '名称',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of field_data
-- ----------------------------
INSERT INTO `field_data` VALUES (1, '第1条数据');
INSERT INTO `field_data` VALUES (2, '第2条数据');
INSERT INTO `field_data` VALUES (3, '第3条数据');
INSERT INTO `field_data` VALUES (4, '第4条数据');
INSERT INTO `field_data` VALUES (5, '第5条数据');
INSERT INTO `field_data` VALUES (6, '第6条数据');

SET FOREIGN_KEY_CHECKS = 1;

2、一般的排序写法

SELECT
	* 
FROM
	`field_data` 
ORDER BY
	id DESC,
	NAME ASC;

3、通过mysql的FIELD()函数指定排序

3.1定义和用法

FIELD()函数返回值列表中值的索引位置。此函数执行不区分大小写的搜索。

注意:如果在值列表中找不到指定的值,则此函数将返回0.如果value为NULL,则此函数将返回0。

3.2 语法

FIELD(valueval1val2val3, ...)

3.3 参数值

参数描述
value必须。要在列表中搜索的值
val1val2val3,....必须。要搜索的值列表

3.4 实际写法demo 

SELECT
	* 
FROM
	`field_data` 
ORDER BY
	FIELD( id, 3, 2, 4 ) DESC,
	FIELD( NAME, "第5条数据" ) ASC;

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐