菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
385
0

项目实例——多表关联查询判断A的字段是否在B中,在显示该字段值,不在显示空;B的字段是否在C中,在显示该字段值,不在显示空。

原创
05/13 14:22
阅读数 20228

1、需求:

(1)三张表A、B、C  三个表id相同,如果A表中的name在B表中的bname中显示aname值,否则显示空;如果C表中的addr在B表中的tel显示addr,否则显示空

2、实现方式

(1)用decode函数

select 
a.id,a.name,b.bname,b.tel,c.addr ,
decode(a.name,b.bname,a.name,null) as aname,
decode(c.addr,b.tel,c.addr,null) as addr
from A a,B b,C c where  a.id=b.bid and b.bid=c.cid and a.id=c.cid 

效果图:

 

 (2)用case....when....实现

select 
a.id,a.name,b.bname,c.addr ,
(case when a.name in (select bname from b) then a.name 
else '' end
) 
from A a,B b,C c where  a.id=b.bid and b.bid=c.cid and a.id=c.cid 

效果图:

 

发表评论

0/200
385 点赞
0 评论
收藏