当前位置: 首页 > 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='临时产品表';

相关文章:

  • 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 进阶学习文档
  • 建设银行南昌分行引金融“活水”,精准灌溉乡村沃土
  • “80后”蒋美华任辽宁阜新市副市长
  • 济南高新区一季度GDP增长8.5%,第二产业增加值同比增长14.4%
  • 俄外长:俄将在不损害伙伴关系前提下发展对美关系
  • 安徽省公安厅原副厅长刘海石主动投案,正接受审查调查
  • 在岸、离岸人民币对美元汇率双双升破7.26关口