sql 查询 不满足 (一个教师编号 的角色 (role =‘2‘or(role=‘1‘and role =‘0‘)) )

sql 查询 不满足 (一个教师编号 的角色 (role ='2'or(role='1'and role ='0')) )

准备 一个 teacher 表 和数据

表 teacher 和数据

c 复制代码
-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `role` int(11) NULL DEFAULT NULL COMMENT '(角色;0:普通教师 1:班主任教师,2:普通教师 + 班主任)',
  `teacher_no` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '教师编号',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES (1, 0, 'T001');
INSERT INTO `teacher` VALUES (2, 1, 'T001');
INSERT INTO `teacher` VALUES (3, 2, 'T002');
INSERT INTO `teacher` VALUES (4, 0, 'T003');
INSERT INTO `teacher` VALUES (5, 1, 'T004');
INSERT INTO `teacher` VALUES (6, 0, 'T005');
INSERT INTO `teacher` VALUES (7, 1, 'T006');

SET FOREIGN_KEY_CHECKS = 1;

teacher 表 正确数据 截图

根据sql 查出来 不正确数据

sql

c 复制代码
SELECT DISTINCT t1.teacher_no
FROM (
    SELECT teacher_no,
           MAX(CASE WHEN Role = '0' THEN 1 ELSE 0 END) AS role_ZERO_count,
           MAX(CASE WHEN Role = '1' THEN 1 ELSE 0 END) AS role_One_count,
           MAX(CASE WHEN Role = '2' THEN 1 ELSE 0 END) AS role_Two_flag
    FROM teacher
    GROUP BY teacher_no
) t2
JOIN teacher t1
ON t1.teacher_no = t2.teacher_no
WHERE NOT(t2.role_Two_flag = 1 OR (t2.role_ZERO_count = 1 AND t2.role_One_count = 1))

不正确数据 截图

相关推荐
Z字小熊饼干爱吃保安5 分钟前
面试技术问题总结一
数据库·面试·职场和发展
极限实验室19 分钟前
一键启动:使用 start-local 脚本轻松管理 INFINI Console 与 Easysearch 本地环境
数据库·docker
没有口袋啦23 分钟前
《数据库》第一次作业:MySQL数据库账户及授权
数据库·mysql
星辰离彬1 小时前
Java 与 MySQL 性能优化:MySQL连接池参数优化与性能提升
java·服务器·数据库·后端·mysql·性能优化
张璐月3 小时前
mysql join语句、全表扫描 执行优化与访问冷数据对内存命中率的影响
数据库·mysql
全干engineer5 小时前
ClickHouse 入门详解:它到底是什么、优缺点、和主流数据库对比、适合哪些场景?
数据库·clickhouse
Hellyc7 小时前
基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理
java·数据库·设计模式·rocketmq
lifallen7 小时前
Paimon LSM Tree Compaction 策略
java·大数据·数据结构·数据库·算法·lsm-tree
{⌐■_■}11 小时前
【Kafka】登录日志处理的三次阶梯式优化实践:从同步写入到Kafka多分区批处理
数据库·分布式·mysql·kafka·go