这种语法在sqlserver2000中不报错,谁试一下在oracle中是不是会报错呀.
--测试
create table a
(
a1 int,
a2 int
)
create table b
(
b1 int,
b2 int
)
insert into a select 1,11
insert into a select 2,12
insert into b select 1,31
insert into b select 3,32
--这样写竟然没有错误提示!!!
select * from a
where a1 not in (select a1 from b)
--这样写竟然没有错误提示!!!
select * from #a
where a1 = (select top 1 a1 from #b)
为什么呢?
------解决方案--------------------没有top
------解决方案--------------------insert into a select 1,11
改成 insert into a select 1,11 from dual
select * from #a
where a1 = (select top 1 a1 from #b)
改成
select * from #a
where a1 = (select a1 from #b where rownum = 1)
------解决方案--------------------没有#表,没有top
------解决方案--------------------肯定报错.
------解决方案--------------------ztoracle中临时表
1) ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法.
CREATE GLOBAL TEMPORARY TABLE admin_work_area
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;
2)ON COMMIT PRESERVE ROWS 定义了创建会话级临时表的方法.
CREATE GLOBAL TEMPORARY TABLE admin_work_area
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT PRESERVE ROWS;