mysql在where后进行条件判断
mysql在where后进行条件判断
需求
where 后判断 某个字段是否为空,不为空则根据这个字段判断(比如大于0),为空则根据另一个字段判断
基础数据
CREATE TABLE `user` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`age` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`f_time` datetime(0) NULL DEFAULT NULL,
`l_time` datetime(0) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;
INSERT INTO `user` VALUES (2, 18, '张三', '小学生', '2022-08-03 18:06:57', '2022-08-03 18:06:54');
INSERT INTO `user` VALUES (4, 18, '小丽', '小学生', '2022-08-03 18:06:57', '2022-08-03 18:06:57');
INSERT INTO `user` VALUES (6, 18, '小花', '中学生', '2022-08-03 18:06:57', '2022-08-03 18:06:57');
INSERT INTO `user` VALUES (8, 18, '王鑫', '', '2022-08-03 18:06:57', '2022-08-01 18:06:57');
INSERT INTO `user` VALUES (10, 20, '456', NULL, NULL, '2022-08-01 18:06:57');
函数
IF(expr,v1,v2) 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
示例sql
如果label为空,则取id小于10的,不为空则取label为小学生的
SELECT * FROM `user` where id>2 and IF(label is null ,id <10,label="小学生")