当前位置: 首页 > article >正文

高级技巧-使用Mysql 实现根据条件过滤整个分组数据

博客-mysql exists实现过滤所属条件对应分组的全部数据

在数据查询中,有时需要根据某一条件来过滤整个分组的数据,尤其是当某条记录满足特定条件时,需要将该组内的所有记录排除。本文将介绍如何使用 MySQL 的 EXISTS 关键字来实现这种分组过滤的功能。通过具体示例,我们展示了如何在复杂的数据库查询中高效地排除符合条件的分组数据

假设有一个旅游记录表,我想要查询 未去过长沙市旅游的人,

在这里插入图片描述

如果使用

where travel_city != ‘长沙’ 是实现不了的,因为一个人可能会去到很多地方,上述条件只是过滤了 去长沙的记录,但是我是想查询 没去过长沙的

在这里插入图片描述

这时候 可以使用exists条件实现

SELECT *
FROM travel_records t1
WHERE NOT EXISTS (
    SELECT 1
    FROM travel_records t2
    WHERE t1.empId = t2.empId -- 同一员工(empId相同)
    AND t2.travel_city = '长沙市'  -- 条件:到过长沙市
);

实践


表结构和插入的数据

drop  table travel_records ;
CREATE TABLE travel_records (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'Primary Key',      -- 唯一标识
    empId INT NOT NULL COMMENT '员工ID',                    -- 员工ID,用于分组
    name VARCHAR(100) NOT NULL COMMENT '员工姓名',                   -- 员工姓名
    age INT NOT NULL COMMENT '员工年龄',                              -- 员工年龄
    travel_province VARCHAR(100) NOT NULL COMMENT '旅游的省',    -- 旅游的省
    travel_city VARCHAR(100) NOT NULL COMMENT '旅游的市',            -- 旅游的市
    travel_district VARCHAR(100) NOT NULL COMMENT '旅游的区或县'     -- 旅游的区或县
) comment '人员旅游记录表';

插入数据

INSERT INTO travel_records (empId, name, age, travel_province, travel_city, travel_district) VALUES
(1001, '张三', 25, '湖南省', '长沙市', '岳麓区'), 
(1001, '张三', 25, '湖北省', '武汉市', '武昌区'),
(1002, '李四', 30, '北京市', '北京市', '朝阳区'),
(1002, '李四', 30, '天津市', '天津市', '滨海新区'),
(1003, '王五', 35, '广东省', '广州市', '天河区'),
(1003, '王五', 35, '湖南省', '长沙市', '开福区'),
(1004, '赵六', 28, '上海市', '上海市', '浦东新区');

执行sql

# 正确的sql
SELECT *
FROM travel_records t1
WHERE NOT EXISTS (
    SELECT 1
    FROM travel_records t2
    WHERE t1.empId = t2.empId -- 同一员工(empId相同)
    AND t2.travel_city = '长沙市'  -- 条件:到过长沙市
);

# 错误的sql
select * from  travel_records where travel_city != '长沙市'

http://www.kler.cn/a/458425.html

相关文章:

  • win11蓝屏死机 TPM-WMI
  • 最大化堡垒补给数量的策略与实现
  • typescript中的interface理解
  • 2024年中国新能源汽车用车发展怎么样 PaperGPT(一)
  • swagger,showdoc,apifox,Mock 服务,dubbo,ZooKeeper和dubbo的关系
  • springboot534售楼管理系统(论文+源码)_kaic
  • 正则化强度的倒数C——让模型学习更准确
  • Bash 脚本教程
  • 【Python】什么是元组(Tuple)?
  • TCP/IP原理
  • OpenCV-Python实战(4)——图像处理基础知识
  • 数据资产运营平台如何搭建?数据要素资产运营平台解决方案 解读
  • C++软件设计模式之代理(Proxy)模式
  • pikachu靶场搭建详细步骤
  • 爬虫入门一 基础知识 以及request
  • 【HF设计模式】04-工厂模式
  • 【论文笔记】Top-nσ: Not All Logits Are You Need
  • 游戏引擎学习第65天
  • “校园疫情防控的技术支持”:疫情管控系统的实现与评估
  • WPF系列四:图形控件Rectangle
  • 【代码分析】Unet-Pytorch
  • 【每日学点鸿蒙知识】hvigor升级、Dialog动画、LocalStorage无效、页面与子组件的生命周期、cookie设置
  • GNN图神经网络模型详解与代码复现
  • 正点原子串口例程解读
  • Ollama+OpenWebUI+llama3本地部署
  • 跟着问题学3.1——R-CNN模型详解