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="小学生")
posted @ 2022-08-03 19:15  进击的小蔡鸟  阅读(2596)  评论(0编辑  收藏  举报