初识case when

本文介绍了一种使用 SQL 的 case when 语句解决实际问题的方法。具体场景为:从两个表中联合查询数据,其中一个表的地址字段可能为空,这时需要从另一个表中获取地址信息作为补充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到了一个问题

有两张表,表1 id ,name,address

    表2 aid naddress

aid关联表一中的id,在表1中有N条记录,其中address有可能为空,但在表2中有记录。

求用一条sql语句查出表1中的数据,当address为空就查找表2的naddress。

在这之前并不知道mysql有 case when用法,走了很多弯路一直没做出来

后来查资料得知


case when语句在db2,oracle,sql server系列,等大型数据库都受到支持,是标准的sql语句.
可以这样子理解:case... when... then...else...end
case when语法有两种情况:


第一种是case后面不带表达式的;
case when expression then 操作1
          when expression then操作2
           .......
          else操作n
end


第二种是case后面带表达式的(而此时when后面的则是该表达式可能的值)
通用。
case expression
when expression值1 then 操作1
when expression值2 then 操作2
                .......
                else操作n
end


最后查询语句是

select 
name,
case 
when tab1.address is null then tab2.naddress
else tab1.address end
from 
tab1 left JOIN tab2  ON (tab1.id = tab2.aid )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值