如何利用case when来根据条件返回多个字段?

frank1197 2011-03-15 07:38:16
如果1=1的话,从A表里把name和id取出来,如果1<>1的话,从B表里把name和id取出来。

select
case
when 1=1
then A.name,
A.id
ELSE B.name,
B.id
form
A left join B on ...

上面那段SQL文执行不成功,then貌似只能返回一个结果
...全文
8554 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
frank1197 2011-03-16
  • 打赏
  • 举报
回复
1=1只是个例子,根据不同的条件,取不同表里的字段。。。
frank1197 2011-03-16
  • 打赏
  • 举报
回复
谢谢各位大大的回答~~~

我换了个想法,实现了。。
先把所有条件下数据都用子查询检索出来后,在where条件里用case来匹配。

zhendeainixinxin 2011-03-16
  • 打赏
  • 举报
回复
select (case when 1=1 then A.name else B.name end) name,
(case when 1=1 then A.id else B.id end) id
from 表A,表B
archwuke1 2011-03-16
  • 打赏
  • 举报
回复
case 的return 的子句里面应该只能出现一行一列
li1229363 2011-03-16
  • 打赏
  • 举报
回复
decode~~

哇哈哈~貌似oracle的decode可以实现你的要求的说,而且实现起来比较容易


decode(条件字段或者啥东西,条件一,条件一所要赋值,条件二,条件二所要赋值,条件三,条件三所要赋值,条件四,条件四所要赋值,..........条件n,条件n赋值,默认赋值)
coolkisses 2011-03-15
  • 打赏
  • 举报
回复
同意2楼的解决方案,但,还是同上问,到底取哪个表? 从条件上来看,不可能直接用1=1。
iqlife 2011-03-15
  • 打赏
  • 举报
回复
你到底是取A表的还是取B表的?
iqlife 2011-03-15
  • 打赏
  • 举报
回复
你到底是取A表的还是取B表的?
horizonlyhw 2011-03-15
  • 打赏
  • 举报
回复
1=1是真理啊 你永远就只能看到A.name,A.id
  • 打赏
  • 举报
回复

select (case when 1=1 then A.name||A.id ELSE B.name||B.id end)

--或者
select (case when 1=1 then A.name else B.name end) name,
(case when 1=1 then A.id else B.id end) id
from
...
dawugui 2011-03-15
  • 打赏
  • 举报
回复
select a.* from a where ...
union all
select b.* from b where ...

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧