MySQL语法咨询:如何筛选满足条件且非空的列值?
解答:从列中选取满足特定条件的所有值
没问题,这种需求在MySQL里完全可以实现!我结合你的示例和尝试来给你梳理清楚:
1. 单条件筛选的正确写法
你已经写出了符合需求的基础查询语句,用来提取l_legs等于2的所有对应列数据:
SELECT l_legs,a_calling_rtcp_mos_fs1 from ims_calls where l_legs=2;
从你给出的查询结果来看,这条语句确实返回了所有l_legs字段值为2的记录,包括其中a_calling_rtcp_mos_fs1为空的行,完全符合预期。
2. 多条件筛选(排除空值)
如果需要同时满足“l_legs=2”和“a_calling_rtcp_mos_fs1不为空”的要求(对应你提到的“b does not equal blank”需求),只需要在WHERE子句里用AND追加非空判断即可。这里要注意:在MySQL中,判断字段不为NULL必须用IS NOT NULL(如果还需要排除空字符串'',可以再加AND a_calling_rtcp_mos_fs1 != '')。
对应到你的示例场景,修改后的查询语句如下:
SELECT l_legs,a_calling_rtcp_mos_fs1 from ims_calls where l_legs=2 AND a_calling_rtcp_mos_fs1 IS NOT NULL;
执行这条语句后,就会过滤掉结果中那个a_calling_rtcp_mos_fs1为空的行,只保留符合双条件的记录。
另外,你自己尝试的SELECT a,b FROM y WHERE a=1 AND b IS NOT NULL写法完全正确,精准对应了“选取a=1且b不为空的所有a、b列值”的需求,放心用就好~
内容的提问来源于stack exchange,提问作者HattrickNZ
相关产品推荐
相关产品推荐

