今天遇到了一个问题
有两张表,表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 )