暂无图片
关于SQL条件匹配的问题
我来答
分享
刘广
2021-11-08
关于SQL条件匹配的问题
暂无图片 10M


有没有大神教我怎么写SQL呢,不会写条件判断,想通过一条SQL实现上面需求。

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
DarkAthena

首先我假定你的deptno在beijing和wuhan是不重复的。

WUHAN和BEIJING这两个表明显是一个数据拆成了两张表,理论上就应该竖着放(UNION ALL),这样才容易扩展新省份的表。
比如

SELECT e.*,c.location FROM EMP E, ( SELECT 'A' E,A.* FROM BEIJING A UNION ALL SELECT 'B',B.* FROM WUHAN B ) C WHERE E.deotno=C.deotno(+) AND SUBSTR(E.ename,1,1)=C.E;
复制

如果你一定要根据条件关联不同的表,即横着排,那么你select的字段就会写得比较复杂了

select e.*, case when substr(e.ENAME,1)='A' THEN A.LOCATION WHEN substr(e.ENAME,1)='B' THEN B.LOCATION END LOCATION from emp e,BEIJING A,WUHAN B where E.deotno=A.deotno(+) AND E.deotno=B.deotno(+);
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
刘广
题主
2021-11-09
感谢专家的帮助~
薛晓刚

select a.id,a.ename,a.depton from emp a,beijing b,wuhan c where a.deptno=b.deptno and a.deptno=c.deptno

暂无图片 评论
暂无图片 有用 0
打赏 0
刘广
题主
2021-11-08
不好意思,题目描述的有问题,我重新发起一个,谢谢您
刘广
题主
2021-11-08
主要是想通过条件判断来实现,因为实际业务场景其实不能做等值连接的,否则结果会不对
chengang

写union all吧。


select * from  emp  a  inner join  bejing b  on a.deptno = b.deptno  

where  a.ename like 'A_'

union all

select * from  emp  a  inner join  wuhan b  on a.deptno = b.deptno  

where  a.ename like 'B_'

暂无图片 评论
暂无图片 有用 0
打赏 0
刘广
题主
2021-11-08
不是喔,实际业务场景只能用条件判断实现
chengang
答主
2021-11-08
这条SQL我觉得能满足你的需求啊
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏