如何实现WHERE条件不匹配时返回NULL值的SQL查询?
实现保留所有日期行并按条件显示Data列
完全可以实现这个需求,不需要过滤行,只需要通过条件判断修改Data列的输出值即可,核心是用条件表达式替换不符合要求的Data值为NULL。
通用SQL写法(适配MySQL、PostgreSQL、SQL Server等多数数据库)
SELECT Date, CASE WHEN Data = 'Cool' THEN Data ELSE NULL END AS Data FROM your_table_name;
MySQL简化写法
MySQL支持IF()函数,可实现更简洁的写法:
SELECT Date, IF(Data = 'Cool', Data, NULL) AS Data FROM your_table_name;
效果验证
原表数据:
| Date | Data |
|---|---|
| 1 | Not Cool |
| 2 | Cool |
| 3 | Cool |
| 4 | Not Cool |
执行上述SQL后得到的结果:
| Date | Data |
|---|---|
| 1 | NULL |
| 2 | Cool |
| 3 | Cool |
| 4 | NULL |
这种写法的逻辑是:不对行做过滤(因此保留所有Date记录),仅对每行的Data值做判断——等于'Cool'则保留原内容,否则替换为NULL,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Khantahr
相关产品推荐
相关产品推荐

