目录
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(value,?val1,?val2,?val3, ...)
3.3 参数值
参数 | 描述 |
---|
value | 必须。要在列表中搜索的值 | val1,val2,val3,.... | 必须。要搜索的值列表 |
3.4?实际写法demo?
SELECT
*
FROM
`field_data`
ORDER BY
FIELD( id, 3, 2, 4 ) DESC,
FIELD( NAME, "第5条数据" ) ASC;
|