select case when语句

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

今天看见一公司的数据库面试题,其中有道一开始没想起怎么做,后来摸索了下终于做出来了。

题目是:两个表联合查询,当表2的记录在表A里没有时,将其设置为0.

mysql> select * from t1;
+----+------+
| id | name |
+----+------+
|  1 | bbs  |
|  2 | bb   |
|  3 | cc   |
+----+------+
3 rows in set (0.01 sec)

mysql> select * from t2;
+----+------+
| id | name |
+----+------+
|  1 | aa   |
|  2 | bb   |
+----+------+
2 rows in set (0.00 sec)

mysql> select t1.name as name1,t2.name as name2 from t1 left join t2 on t1.id=t2.id;                                         
+-------+-------+
| name1 | name2 |
+-------+-------+
| bbs   | aa    |
| bb    | bb    |
| cc    | NULL  |
+-------+-------+
3 rows in set (0.00 sec)

将NULL变为0

 

第一种写法:

mysql> select t1.name as name1,if(t2.name is NULL,0,t2.name) as name2 from t1 left join t2 on t1.id=t2.id;                         
+-------+-------+
| name1 | name2 |
+-------+-------+
| bbs   | aa    |
| bb    | bb    |
| cc    | 0     |
+-------+-------+
3 rows in set (0.00 sec)

 

第二种写法:

mysql> select t1.name as name1,(case when t2.name is NULL then '0' else t2.name end) as name2 from t1 left join t2 on t1.id=t2.id;   
+-------+-------+
| name1 | name2 |
+-------+-------+
| bbs   | aa    |
| bb    | bb    |
| cc    | 0     |
+-------+-------+
3 rows in set (0.00 sec)

 

参考:

http://apps.hi.baidu.com/share/detail/22393623

 

本文转自 liang3391 51CTO博客,原文链接:http://blog.51cto.com/liang3391/815271


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 数据库
SQL中CASE WHEN THEN ELSE END的用法详解
SQL中CASE WHEN THEN ELSE END的用法详解
|
5月前
|
SQL
SQL语句case when then else end用法
SQL语句case when then else end用法
|
4月前
|
SQL 数据采集 BI
SQL CASE WHEN语句详解
SQL CASE WHEN语句详解
|
SQL 关系型数据库 MySQL
第3章_基本select语句
第3章_基本select语句
65 0
|
6月前
|
SQL
SQL语句case when的用法
SQL语句case when的用法
|
SQL 存储 前端开发
第03章_基本的SELECT语句
第03章_基本的SELECT语句
219 1
|
SQL 存储 关系型数据库
03_基本的SELECT语句
03_基本的SELECT语句
97 0
|
SQL BI
SQL利用Case When Then多条件判断
CASE     WHEN 条件1 THEN 结果1     WHEN 条件2 THEN 结果2     WHEN 条件3 THEN 结果3     WHEN 条件4 THEN 结果4 .........     WHEN 条件N THEN 结果N     ELSE 结果X END Case具有两种格式。
7271 0
|
SQL
SQL CASE 多条件用法
Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex          WHEN '1' THEN '男'          WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男'          WHEN sex = '2' THEN '女' ELSE '其他' END   这两种方式,可以实现相同的功能。
1390 0