有三个表
要创建一个view
如果A表中的 a 字段值为 0
则让 A表 id 字段等于 B表的id
如果A表中的 a 字段值为 1
则让 A表 id 字段等于 C表的id
要创建一个view
如果A表中的 a 字段值为 0
则让 A表 id 字段等于 B表的id
如果A表中的 a 字段值为 1
则让 A表 id 字段等于 C表的id
解决方案 »
- Oracle 11G R2数据库50张表,写后台操作。存储过程,sql语句,视图。哪个性能好?50分等回答
- oracle执行计划疑问
- ORACLE DMP文件的导入?
- 菜鸟 求教2个小问题(关于SQL搜索语句)!
- [请教]Oracle中写sql脚本利用spool功能导出数据的问题
- 为什么我把表空间设为自动增长了还说空间不够?
- 散分喽
- 一个菜鸟问题,关于如何进入sql plus。
- 紧急求救:oracle8.1.7服务端启动时出现的奇怪现象
- 在odi 执行 sql loader 装数的时候出错
- VB.net2005,ORA-12154 TNS:无法解决指定的识别符号
- 从oracle10g升级到11
select a.*, b.* from a, b where a.a=0 and a.id=b.idunion select a.*, c.* from a, c where a.a=1 and a.id=c.id
如果a.a没加索引,并且a记录数很多
也可以这样:
select a.*,
decode(a.a, 0, b.x, 1, c.x),
decode(a.a, 0, b.x, 1, c.x),
decode(a.a, 0, b.x, 1, c.x),
...
from a, b, c where a.id=b.id(+) and a.id=c.id(+)
case 写法更容易被系统接受,因为它与ansi兼容,符合SQL/92标准
select A.*,
case A.a when 0 then b.X
else c.X
end as X
from A left join B using(id)
left join C using(id)