如何查询指定列并按条件返回目标列值(不符合时留空)
条件返回列的SQL查询实现
示例数据表
| ID | name | city | cat |
|---|---|---|---|
| 1 | alpha | dola | du |
| 2 | beta | mola | su |
| 3 | zeta | dola | hu |
需求
查询所有ID、name列的数据,仅当city列值为'dola'时返回cat列数据,否则该列留空。
解决方案
通用SQL写法(支持所有主流数据库)
使用CASE表达式(SQL标准语法)实现条件判断:
SELECT ID, name, CASE WHEN city = 'dola' THEN cat ELSE '' END AS cat FROM 你的表名;
逻辑说明:当city字段值等于'dola'时,返回cat字段的内容;否则返回空字符串。
MySQL/MariaDB 简化写法
可以使用MySQL专属的IF函数简化代码:
SELECT ID, name, IF(city = 'dola', cat, '') AS cat FROM 你的表名;
逻辑与CASE表达式完全一致,写法更简洁。
执行结果
| ID | name | cat |
|---|---|---|
| 1 | alpha | du |
| 2 | beta | |
| 3 | zeta | hu |
内容的提问来源于stack exchange,提问作者Lutter
相关产品推荐
相关产品推荐

