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

SQL查询:若人员曾有0.07百分比记录就过滤其所有数据如何实现

解决方案

你之前用的WHERE percent != 0.07只过滤了单条记录的取值,没有按人员维度做全局校验,所以会出现有过0.07记录的人员其他取值的记录仍然被返回的问题。正确的实现逻辑是先筛选出所有存在percent=0.07记录的人员,再在全量查询中排除这些人员,以下是几种常用实现方式:

写法1:NOT IN 子查询(逻辑最清晰易读)

SELECT *
FROM 你的表名
WHERE 人员姓名字段 NOT IN (
    SELECT DISTINCT 人员姓名字段
    FROM 你的表名
    WHERE percent = 0.07
);

子查询先提取所有有过0.07记录的人员名单,外层查询直接排除这些人员即可。

写法2:NOT EXISTS(性能表现更稳定)

SELECT *
FROM 你的表名 t1
WHERE NOT EXISTS (
    SELECT 1
    FROM 你的表名 t2
    WHERE t2.人员姓名字段 = t1.人员姓名字段
      AND t2.percent = 0.07
);

逐行校验当前人员是否存在0.07的记录,不存在才返回,适合绝大多数业务场景。

写法3:LEFT JOIN 判空(适合大表优化场景)

SELECT t1.*
FROM 你的表名 t1
LEFT JOIN (
    SELECT DISTINCT 人员姓名字段
    FROM 你的表名
    WHERE percent = 0.07
) t2 ON t1.人员姓名字段 = t2.人员姓名字段
WHERE t2.人员姓名字段 IS NULL;

关联后过滤掉匹配到有0.07记录的人员,部分数据库下该写法执行效率更高。

注意:如果你的人员姓名字段允许为NULL,建议优先使用NOT EXISTS或LEFT JOIN写法,避免NOT IN遇到NULL值时返回结果不符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:03