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

如何查询表中无对应列B为NULL值的列A的所有取值?

实现方案

你可以用以下两种SQL实现需求,两种写法均可以正确返回不存在B为NULL的异常A取值,可根据你的表索引情况选择性能更优的方案,表名请替换为你实际的表名:

方案1:分组聚合写法

适合不需要额外索引的全表扫描场景:

SELECT A
FROM your_table
GROUP BY A
HAVING COUNT(B) = COUNT(*)

逻辑说明:COUNT(B)统计时会自动忽略B为NULL的行,COUNT(*)会统计分组内所有行数,二者相等说明该A分组下没有B为NULL的行,即为你需要的异常数据。
你也可以用更直观的条件替换HAVING子句:

HAVING SUM(CASE WHEN B IS NULL THEN 1 ELSE 0 END) = 0

方案2:NOT EXISTS写法

如果A列建有索引,该方案性能会明显优于分组写法:

SELECT DISTINCT t1.A
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.A = t1.A AND t2.B IS NULL
)

以上两种写法针对你给出的示例数据,都会返回结果d,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:30:04