mysql - 如何根据其他列的结果运行 SELECT 语句?
问题描述
我有一个这样的 MySQL 表:
CREATE TABLE `my_table` (
`col1` varchar(45) DEFAULT '',
`col2` varchar(45) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
它包含以下数据:
如何使用SELECT
语句生成这样的结果:
列内容的含义check
如下:
`both` when both `col1` and `col2` have values.
`left` when only `col1` has a value.
`rightest` when only `col2` has a value.
`empty` when both `col1` and `col2` has empty value.
我认为查询看起来像这样
# something must be used to replace ???
SELECT (???) AS check, col1, col2 FROM my_table;
where???
应该改成别的东西。
解决方案
使用CASE WHEN
表达式
SELECT CASE WHEN col1 = '' and col2='' then 'Empty'
WHEN col1 = '' then 'Right'
WHEN col2='' then 'Left'
else 'Both' end as 'Check',
col1, col2 FROM yourtablename
推荐阅读
- dataweave - 从 Mule 4 的属性文件中读取 mule 变量
- firebase - Firebase 存储规则 - 如果路径已知,已注销的用户可以打开文档
- unreal-engine4 - 如何在空中停止移动?
- flutter - 如何扩展小部件以覆盖它的某些属性?
- python - 为蒙版图像中的不同对象着色
- c++ - 多重重定义全局变量错误
- vue.js - Video.js 无法在 mp4 中拍摄视频
- sparql - SPARQL:从 P279+ 查询中获取所有实体
- react-native - 由于依赖关系,无法升级 React-Native 项目
- reactjs - 带有参数的反应路由器给出 404 错误