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

MySQL查询:当cota列值为paga时隐藏对应行的实现方法

解决方法:修正字符串值的引用问题

你的问题出在NOT IN(paga)这部分——paga是字符串值,必须用单引号括起来,否则MySQL会把它当成列名来解析,自然达不到过滤的效果。

修改后的SQL语句(两种可选写法)

写法1:使用NOT IN(适合后续需要添加多个排除值的场景)

SELECT DATE_FORMAT(nascimento, '%d-%m-%Y') as 'nascimento', 
       `first_name`, 
       `last_name`, 
       `name_completo`, 
       `cota` 
FROM `socios` 
WHERE MONTH(nascimento) = MONTH(NOW()) 
  AND cota NOT IN ('paga') 
ORDER BY nascimento ASC;

写法2:直接使用<>(更简洁,仅排除单个值时推荐)

SELECT DATE_FORMAT(nascimento, '%d-%m-%Y') as 'nascimento', 
       `first_name`, 
       `last_name`, 
       `name_completo`, 
       `cota` 
FROM `socios` 
WHERE MONTH(nascimento) = MONTH(NOW()) 
  AND cota <> 'paga' 
ORDER BY nascimento ASC;

额外注意事项

如果cota列存在NULL值,两种写法的表现会有差异:

  • NOT IN ('paga'):会自动排除cota为NULL的行(因为SQL中NULL和任何值比较都返回UNKNOWN)
  • cota <> 'paga':会保留cota为NULL的行,如果你需要同时排除NULL,可以改成:
    AND (cota <> 'paga' AND cota IS NOT NULL)
    
    或者更简洁的:
    AND COALESCE(cota, '') <> 'paga'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:55:36