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

不正确数据 截图

相关推荐
Mr.Entropy7 分钟前
无数据库连接池,对操作数据库效率影响
数据库
java_logo10 分钟前
Docker 部署 PostgreSQL 数据库教程
数据库·docker·postgresql·postgresql部署·postgresql部署文档·postgresql部署方案·postgresql部署教程
韩立学长1 小时前
基于Springboot就业岗位推荐系统a6nq8o76(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
lkbhua莱克瓦241 小时前
进阶-索引5-设计原则
开发语言·数据库·笔记·mysql·索引·存储引擎
孤独天狼1 小时前
redis面试题
数据库·redis·缓存
hk11241 小时前
【Hardware/Robotics】2026年度多态硬件重构与自主机器人内核基准索引 (Benchmark Index)
开发语言·数据库·机器人·嵌入式·硬件开发
宇宙的尽头是PYTHON1 小时前
最简单的sql求最大值
数据库·sql
DBA小马哥1 小时前
达梦VS金仓:Oracle国产替代深度对比
数据库·oracle·kingbasees·金仓数据库
最贪吃的虎2 小时前
【分布式】分布式事务框架 Seata 详解:架构与四种实现模式
java·开发语言·数据库·分布式·后端·架构
·云扬·2 小时前
sysbench压测实战指南:从硬件到MySQL性能评估
数据库·mysql