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

SQL查询:如何查找不存在指定列值的所有名称

SQL查询实现方案

首先假设你使用的数据表名为person_spirit_animal,实际使用时替换为你的真实表名即可,以下提供几种常用的实现方式:

方式1:NOT IN 子查询写法

逻辑直观容易理解,适合小数据量场景:

SELECT DISTINCT Name
FROM person_spirit_animal
WHERE Name NOT IN (
    SELECT DISTINCT Name
    FROM person_spirit_animal
    WHERE `Spirit Animal` = 'Wolf'
);

方式2:GROUP BY + HAVING 聚合写法

执行效率更高,适合数据量较大的场景:

SELECT Name
FROM person_spirit_animal
GROUP BY Name
HAVING COUNT(CASE WHEN `Spirit Animal` = 'Wolf' THEN 1 END) = 0;

方式3:NOT EXISTS 关联查询写法

可以避免NOT IN子查询遇到空值时的异常问题,兼容性更好:

SELECT DISTINCT t1.Name
FROM person_spirit_animal t1
WHERE NOT EXISTS (
    SELECT 1
    FROM person_spirit_animal t2
    WHERE t2.Name = t1.Name
      AND t2.`Spirit Animal` = 'Wolf'
);

注意:因为列名Spirit Animal包含空格,MySQL语法下用反引号包裹,如果你使用的是其他数据库,需要对应调整转义符:SQL Server用方括号[Spirit Animal],Oracle用双引号"Spirit Animal"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:18:01