You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL技术问询:如何在WHERE子句中使用SELECT查询结果筛选记录?

数据表结构与数据

iddateprevcam
12024-07-069895541
22024-07-059895531
32024-07-059800041
42024-07-0610095541

需求说明

筛选出date='2024-07-06'的记录,要求该记录的prev值在date='2024-07-05'的记录中存在不同的cam值,预期结果仅为id=1的记录。

正确查询方法

方法1:JOIN关联查询

SELECT t1.*
FROM maincourante t1
JOIN maincourante t2 
  ON t1.prev = t2.prev 
  AND t2.date = '2024-07-05'
WHERE t1.date = '2024-07-06'
  AND t1.cam != t2.cam;

逻辑:将目标日期(07-06)的记录与前一天(07-05)同prev的记录关联,直接筛选出两者cam值不同的记录。

方法2:EXISTS子查询

SELECT *
FROM maincourante t1
WHERE t1.date = '2024-07-06'
  AND EXISTS (
    SELECT 1
    FROM maincourante t2
    WHERE t2.prev = t1.prev
      AND t2.date = '2024-07-05'
      AND t2.cam != t1.cam
  );

逻辑:对07-06的每条记录,检查是否存在同prev、07-05且cam值不同的记录,存在则保留当前记录。

原查询问题说明

原查询存在字段名错误(如camera应为cam,mc_data/data应为date),且子查询若返回多行会触发报错,逻辑不够严谨,上述两种方法可避免这些问题并准确得到预期结果。

内容的提问来源于stack exchange,提问作者DellaeMme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 19:30:59