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

不正确数据 截图

相关推荐
CarIise25 分钟前
MySQL数据库表关系与多表查询:从表间关系设计到JOIN联表查询
数据库·mysql
网络工程小王40 分钟前
【LLM开发实验】FastAPI 学习笔记
数据库·笔记·学习·mysql·fastapi
Aime_Perfect1 小时前
sqlserver always on
服务器·数据库·sqlserver
摘星编程1 小时前
从“数据出库“到“模型入库“:DolphinDB 库内机器学习全流程实践
数据库
Sagittarius_A*1 小时前
【好靶场】SQL注入-时间盲注
数据库·sql
神明不懂浪漫2 小时前
【第二章】库、表、增删改查操作
开发语言·数据库·经验分享·笔记
其实防守也摸鱼2 小时前
OpenClaw 深度解析:从原理到实战的完整指南
运维·服务器·数据库·github·copilot
hzp6662 小时前
doris学习6:参数调优
数据库·doris·参数·数据库调优
盟道科技3 小时前
小程序电商订单超时自动取消的三种实现方案:定时扫描、Redis 过期监听、延迟消息对比与生产落地
数据库·redis·小程序
剑锋所指,所向披靡!3 小时前
MySQL存储引擎
数据库·mysql