一、排序
1.1ORDER BY FIELD(column,value1,value2,value3...)
指定序列对结果进行排序
例子
CREATE TABLE `course` (
`CId` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`Cname` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`TId` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`CId`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `course` VALUES ('01', '语文', '02');
INSERT INTO `course` VALUES ('02', '数学', '01');
INSERT INTO `course` VALUES ('03', '英语', '03');
不加排序的结果:
CID
TID
CName
01
语文
02
02
数学
01
03
英语
03
加入排序:
SELECT Cname FROM course ORDER BY FIELD(Cname,'数学','英语','语文');
结果:
order by field
如果表中的结果在给定的序列内找不到,则会出现在查询结果的首个位置
image.png
SELECT Cname FROM course ORDER BY FIELD(Cname,'数学','英语','语文');
体育会出现在第一个位置
体育会出现在第一个位置
二、替换
2.1 IFNULL(str1,str2)
如果str1的值为null,则会替换为str2
例子:
其中一个Cname为null
SELECT IFNULL(Cname,'空') AS Cname FROM course ORDER BY FIELD(Cname,'数学','英语','语文');
2.2 IF(str1,str2,str3)
类似于三元运算符,str1是一个返回Boolean值的表达式,如果为true则返回str2,否则str3
IF(str1,str2,str3)