dblink 下关于in的一个问题

ppwf 2006-01-24 09:07:03
1.建立dblin(连接到自身):
CREATE DATABASE LINK linkname CONNECT TO system IDENTIFIED BY pass USING '(DESCRIPTION=(ADDRESS=

(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SID=myoracle)))';

2-1.在表pktest中随机选择指定列 col1 distinct 值中的2个
select col1 from (select distinct col1 from pktest@linkname order by dbms_random.random )where rownum<=2;

2-2。同上 没有dblink
select col1 from (select distinct col1 from pktest order by dbms_random.random )where rownum<=2;

3-1。pktest中选出col1的值满足步骤2的所有行
select * from pktest@linkname where col1 in( select col1 from (select distinct col1 from pktest@linkname

order by dbms_random.random )where rownum<=2);

3-2。同上 没有dblink
select * from pktest where col1 in( select col1 from (select distinct col1 from pktest order by

dbms_random.random )where rownum<=2);

pktest:
COL1 COL2
---------- ----------
1 2
2 2
3 2
4 3
2 2
4 2

在同一session中上述sql一次执行的结果为:
2-1:
COL1
----------
2
4

已选择2行。

2-2:
COL1
----------
3
4

已选择2行。

3-1:(error:至少两行,且col1中的distinct值数目为2)
COL1 COL2
---------- ----------
1 2

已选择 1 行。

3-2:
COL1 COL2
---------- ----------
3 2
4 3
4 2

已选择3行。

多次执行的结果表明:步骤2的执行效果是一样。
然而步骤3使用dblink时不能正确执行,是in的问题吗?

版本:9.2.0.1.1

谢谢!


...全文
112 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cenlmmx 2006-01-24
  • 打赏
  • 举报
回复
不会吧,9201本来就不稳定,换个版本(9204)试试.
分两步看看呢
1. select col1 from (select distinct col1 from pktest@linkname
order by dbms_random.random )where rownum<=2
2. select * from pktest@linkname where col1 in(1步的返回集);

17,082

社区成员

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

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