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

MySQL查询某个字段的几百个值,是否存在于表中,并列出不存在表中的值(不用再过滤)

基础版(只能查询单个产品)

采用exist来查询

-- 假设产品代码字段为 product_code(根据实际字段名修改)
SELECT 
  product_code AS 产品代码,
  CASE 
    WHEN EXISTS (SELECT 1 FROM product WHERE product_code = '指定产品代码') 
    THEN '存在' 
    ELSE '不存在' 
  END AS 存在状态
FROM dual; -- 单次查询单个产品代码

使用临时表(推荐)

WITH codes_to_check (code) AS (
  -- 在此处列出要检查的所有产品代码
  SELECT 'A001' FROM dual UNION ALL
  SELECT 'B002' FROM dual UNION ALL
  SELECT 'C003' FROM dual
)
SELECT 
  c.code AS 待查代码,
  CASE 
    WHEN p.product_code IS NOT NULL THEN '存在' 
    ELSE '不存在' 
  END AS 存在状态,
  COALESCE(p.name, 'N/A') AS 产品名称,
  COALESCE(p.status, 'N/A') AS 上架状态
FROM codes_to_check c
LEFT JOIN product p ON c.code = p.product_code;

WITH codes_to_check (code) AS (
  -- 在此处列出要检查的所有产品代码
  SELECT 'A001' FROM dual UNION ALL
  SELECT 'B002' FROM dual UNION ALL
  SELECT 'C003' FROM dual UNION ALL
  SELECT 'D004' FROM dual
)
SELECT 
  c.code AS 不存在产品代码
FROM codes_to_check c
LEFT JOIN product p ON c.code = p.product_code
WHERE p.product_code IS NULL; -- 过滤出不存在于产品表中的代码

扩展版(用in条件)

此方案也是用了临时表的形式

-- 假设产品代码字段为 product_code
SELECT 
  code AS 不存在产品代码
FROM (
  -- 列出所有需要检查的产品代码
  SELECT 'A001' AS code UNION ALL
  SELECT 'B002' AS code UNION ALL
  SELECT 'C003' AS code UNION ALL
  SELECT 'D004' AS code
) AS codes_to_check
WHERE code NOT IN (
  SELECT product_code FROM product
);

总结

  1. 查询产品代码是否在表中,主要是为了直接筛选出来,不用再进行对比。
  2. 使用临时表, 创建临时表用with(案例使用的是此)或者create temporary table
  3. 创建临时表的基本语法
CREATE TEMPORARY TABLE temp_table_name (
  column1 datatype [constraints],
  column2 datatype [constraints],
  ...
) [COMMENT '表注释'];
  1. 临时表案例
CREATE TEMPORARY TABLE temp_products (
  id INT AUTO_INCREMENT PRIMARY KEY COMMENT '临时产品ID',
  product_code VARCHAR(50) NOT NULL COMMENT '产品代码',
  name VARCHAR(100) NOT NULL COMMENT '产品名称',
  status TINYINT DEFAULT 0 COMMENT '状态:0=下架,1=上架',
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) COMMENT='临时产品表';

文章转载自:
http://christianlike.elldm.cn
http://anemophilous.elldm.cn
http://brute.elldm.cn
http://burl.elldm.cn
http://belletrist.elldm.cn
http://allod.elldm.cn
http://buret.elldm.cn
http://bars.elldm.cn
http://antimechanized.elldm.cn
http://art.elldm.cn
http://centrism.elldm.cn
http://artwork.elldm.cn
http://chloric.elldm.cn
http://cantabrigian.elldm.cn
http://bulbar.elldm.cn
http://anthracite.elldm.cn
http://assemblyman.elldm.cn
http://annulment.elldm.cn
http://cantilever.elldm.cn
http://cansure.elldm.cn
http://bio.elldm.cn
http://abranchial.elldm.cn
http://bazzoka.elldm.cn
http://adonis.elldm.cn
http://available.elldm.cn
http://amazedly.elldm.cn
http://astir.elldm.cn
http://better.elldm.cn
http://apologist.elldm.cn
http://chemoimmunotherapy.elldm.cn
http://www.dtcms.com/a/78202.html

相关文章:

  • Linux驱动学习笔记(四)
  • 【视频】文本挖掘专题:Python、R用LSTM情感语义分析实例合集|上市银行年报、微博评论、红楼梦、汽车口碑数据采集词云可视化
  • 前端Html5 dragenter面试题及参考答案
  • CompletableFuture详解
  • 关于android开发中,sd卡的读写权限的处理步骤和踩坑
  • dify+deepseek联网搜索:免费开源搜索引擎Searxng使用(让你的大模型也拥有联网的功能)
  • Elasticsearch8.17 生产集群使用优化
  • 【AIGC】Win10系统极速部署Docker+Ragflow+Dify
  • SAP-ABAP:AP屏幕增强技术手册-详解
  • 5.2 Alpha to coverage in Depth
  • 在Ubuntu上安装MEAN Stack的4个步骤
  • go面向对象编程三大特性,封装、继承和多态
  • leetcode98-验证二叉搜索树
  • 【2025】基于Springboot + vue实现的毕业设计选题系统
  • Transaction rolled back because it has been marked as rollback-only问题解决
  • windows克隆项目找不到,修改git bash中存储的账号密码
  • 如何查看安卓版本号的方法(例如查看是13、12、11、10...)
  • 齿轮热处理学习笔记分享
  • 【MySQL】基本查询(表的增删查改+聚合函数)
  • MySQL 进阶学习文档
  • 工作记录 2017-02-08
  • 区块链交易签名相关知识总结
  • 经典面试题:C/C++中static关键字的三大核心作用与实战应用
  • 详解过程内聚、时间内聚、顺序内聚、逻辑内聚
  • OpenCV旋转估计(1)用于估计图像间仿射变换关系的类cv::detail::AffineBasedEstimator
  • 8.2《二力平衡》
  • 好看的网络安全登录页面 vue http网络安全
  • 重要重要!!改进求取Fisher矩阵的方法: 加权正则化Fisher矩阵
  • 蓝桥备考--必考题型--广度优先搜索bfs
  • 带旋转的目标标注工具-X-AnyLabeling