select a.id,a.time,a.data,b.time,b.data from data a left join data b on a.id 这条语句怎样改成表连接,使得在各种数据库中都通用
---oracle9i才有left join,8i以下:create table dali.test1(a int,b int); create table dali.test2(a int,b int);insert into dali.test1 values(1,456); insert into dali.test1 values(2,427); insert into dali.test2 values(1,45456); insert into dali.test2 values(3,45656);---内连接 select * from dali.test1 a, dali.test2 b where a.a=b.a;---左连接 select * from dali.test1 a, dali.test2 b where a.a=b.a(+);---右连接 select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;---完全连接 select * from dali.test1 a, dali.test2 b where a.a=b.a(+) union select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;---迪卡尔 select * from dali.test1, dali.test2;
我要的是在各个数据库中都通用的语句阿,你写的在oracle中可以,在sql server中就不行了
select a.fd_meter_joint as 表号,a.fzdate as 最后一次时间,a.data as 最后一次数据,b.fzdate as 倒数第二次时间,b.data as 倒数第二次数据 from ( select * from freezedata as tem where fzdate=(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint) ) as a left join ( select * from freezedata as tem where fzdate=(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint and fzdate<>(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint)) ) as b on a.fd_meter_joint=b.fd_meter_joint大力,这是你给我写的,能不能给我改一下,把left join去掉,而且在各个数据库中都通用,谢谢
a.id = b.id(+)或a.id(+) = b.id
(+)位于需要补足数据的表的一方。
from data a left join data b on a.id
这条语句怎样改成表连接,使得在各种数据库中都通用
create table dali.test2(a int,b int);insert into dali.test1 values(1,456);
insert into dali.test1 values(2,427);
insert into dali.test2 values(1,45456);
insert into dali.test2 values(3,45656);---内连接
select * from dali.test1 a, dali.test2 b where a.a=b.a;---左连接
select * from dali.test1 a, dali.test2 b where a.a=b.a(+);---右连接
select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;---完全连接
select * from dali.test1 a, dali.test2 b where a.a=b.a(+)
union
select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;---迪卡尔
select * from dali.test1, dali.test2;
select * from freezedata as tem where fzdate=(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint)
) as a left join (
select * from freezedata as tem where fzdate=(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint and fzdate<>(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint))
) as b on a.fd_meter_joint=b.fd_meter_joint大力,这是你给我写的,能不能给我改一下,把left join去掉,而且在各个数据库中都通用,谢谢