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

MySQL 5.6如何查询无指定字段或字段值为空的记录

嘿,针对你在MySQL 5.6里的查询需求,我给你整理了两种可行的方案,都能精准拿到你想要的结果(id=2和3):

方案一:用子查询排除不符合条件的id

这个思路最简单直接——先找出那些有field='z'且value去空格后不为空的id,然后取所有不在这个集合里的id就行:

SELECT DISTINCT id
FROM table2
WHERE id NOT IN (
    SELECT id
    FROM table2
    WHERE field = 'z' AND TRIM(value) != ''
);

逻辑拆解:

  • 子查询部分:筛选出需要排除的id——也就是存在有效z字段(去空格后有内容)的id;
  • 外层查询:从表中取出所有不在排除列表里的id,用DISTINCT确保每个id只出现一次。

方案二:用分组+条件判断(适合扩展其他需求)

如果之后需要同时查看每个id的其他统计信息,用分组的方式会更灵活:

SELECT id
FROM table2
GROUP BY id
HAVING 
    -- 条件1:该id没有`field='z'`的记录
    SUM(CASE WHEN field = 'z' THEN 1 ELSE 0 END) = 0
    OR
    -- 条件2:该id的`z`字段去空格后为空
    MAX(CASE WHEN field = 'z' THEN TRIM(value) ELSE '' END) = '';

逻辑拆解:

  • SUM(CASE...):统计每个id下field='z'的行数,等于0就说明这个id没有z字段;
  • MAX(CASE...):取出每个id下z字段去空格后的值(如果没有z字段就取空字符串),如果这个值是空,就符合条件。

两种方案都能完美适配你的场景,MySQL 5.6对TRIM()、CASE这些函数的支持都没问题,测试下来刚好能得到你期望的结果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:36