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))

不正确数据 截图

相关推荐
cuijiecheng20181 分钟前
Little-Anti-Cheat源码分析(1)——Little-Anti-Cheat插件简介
数据库
土狗TuGou4 分钟前
SQL内功笔记 · 第5篇:SQL逻辑执行顺序
数据库·笔记·后端·sql·mysql
草莓熊Lotso12 分钟前
【LangChain】聊天模型实战:结构化输出完全指南(从原理到落地)
数据库·python·langchain·软件工程
草莓熊Lotso15 分钟前
【CMake】静态库的编译、链接与引用全解析
linux·c语言·数据库·c++·软件工程·cmake
程序猿乐锅16 分钟前
【MySQL | 第六篇】 SQL 优化
数据库·sql·mysql
j7~21 分钟前
【MYSQL】索引特性--详解
数据库·mysql·索引操作·索引的理解·mysql与磁盘·b+树与mysql
ccddsdsdfsdf9 小时前
DBeaver怎么链接mongoDB
数据库·mongodb
丷丩10 小时前
Postgresql基础实践教程(十一)各种Join
数据库·postgresql·join
星夜夏空9910 小时前
FreeRTOS学习(4)——内存映射
数据库·学习·mongodb
TheRouter11 小时前
AI Agent 记忆体系建设实战:短期、长期与工作记忆的工程实现
数据库·人工智能·oracle