tb1: costNo1,costNo2 空白表示null
userID costNo1 costNo2
aaa 001
bbb 003
ccc 001 002
ddd 002
eee 001
fff 003tb2:
costNo costName
001 A
002 B
003 C
表tb1z中的costNo1,costNo2和tb2的costNo对应
得到的结果:
costNo costName userID
001 A aaa
001 A ccc
001 A eee
002 B ccc
002 B ddd
003 C fff
userID costNo1 costNo2
aaa 001
bbb 003
ccc 001 002
ddd 002
eee 001
fff 003tb2:
costNo costName
001 A
002 B
003 C
表tb1z中的costNo1,costNo2和tb2的costNo对应
得到的结果:
costNo costName userID
001 A aaa
001 A ccc
001 A eee
002 B ccc
002 B ddd
003 C fff
解决方案 »
- 优化查询
- oracle如何每次取1000条
- 关于oracle存储过程防止sql注入的问题。。。。。。。。。。。。。。。。。。。。。。。。。。。。
- 请各位大大帮帮我
- 求 db2 和oracle 数据截取 方法
- 表中编号更新后带来的问题
- oracle的问题!!!!急!
- 求助oracle数据库删除表的命令是多少?
- 各位大哥:TRC文件错误,数据库启动失败,怎么办啊?急啊!
- 如何在视图中进行排序?!!
- 如何在win中写一个批处理命令来执行oracle执行存储过程?
- 性能问题, 当多个并发用户中,有一个查询大量的数据时,其它用户的查询或相关操作就会很慢,像这种问题如何避免, 是不是需要两台ORACLE 服务器,数据是同步的,一台用作像OLTP的操作,一台用作像OLAP的大量查询操作
select t2.costno,t2.costname,t1.userid
from tb1 t1
left join tb2 t2 on (t2.costno=t1.costno);
有点乱,没大看明白,试试,这是不是你想要的
select b.costNo,b.costName,a.userID from tb1 a ,tb2 b where a.costNo1=b.costNo
union
select b.costNo,b.costName,a.userID from tb1 a ,tb2 b where a.costNo2=b.costNo
--他的tb1数据:aaa 001
bbb 003
ccc 001 002
ddd 002
eee 001
fff 003
--他的tb2数据:001 A
002 B
003 C --其实他想要的数据结果应该是这样的
001 A aaa
001 A ccc
001 A eee
002 B ccc
002 B ddd
003 C fff
--那么要显示上面的结果SQL 如下:(select b.*,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo1
union
select b.costNo,b.costName,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo2 and b.costName in('A','B')
)
intersect
(
select b.costNo,b.costName,a.userID from tb11 a ,tb22 b where a.costNo1=b.costNo
union
select b.costNo,b.costName,a.userID from tb11 a ,tb22 b where a.costNo2=b.costNo
)
--或者(select b.*,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo1
union
select b.costNo,b.costName,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo2 and b.costName in('A','B')
)
intersect
(select b.*,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo1
union
select b.costNo,b.costName,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo2
)如果只是显示下面结果
001 A aaa
001 A ccc
001 A eee
002 B ccc
002 B ddd
003 C bbb
003 C fff --那么
(select b.*,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo1
union
select b.costNo,b.costName,a.userID from tb22 as b left join tb11 as a on b.costNo=a.costNo2
);
--All Above都对的~~~