把MSSQL里面的一句转成oracle的语句
发布网友
发布时间:2022-05-24 18:38
我来回答
共4个回答
热心网友
时间:2023-10-25 12:33
UNION的时候两个查询返回的列必须一样
比如
select column1,column2 from table1
UNION
select column3,column4 from table2;
但是
select 1,2
UNION
select 1;就会出错;
另外注意UNION会自动消除重复
比如
select 1,2
UNION
select 1,2
UNION
select 2,3;
只会返回两行,要得到所有的结果集的话,需要使用
UNION ALL;比如
select 1,2
UNION ALL
select 1,2
UNION ALL
select 2,3;就会返回3行;
至于top 10转换成oracle的语法就用rownum了
select top 10 * from table(mssql)等价于
select * from table where rownum<=10;
注意oracle里面rownum使用要注意,不要用rownum>多少多少,返回结果会很奇怪;
热心网友
时间:2023-10-25 12:33
select fid,fname from T_BASE_REASON_MID
这条语句返回的是两列
select b.*,'全部' from T_BASE_REASON_MID b
这条返回的不止两列吧?
得出报错原因:
列数不同无法使用union
热心网友
时间:2023-10-25 12:34
select fid,fname from T_BASE_REASON_MID union select b.*,'全部' from T_BASE_REASON_MID b
你的oracle语句中,两个表要返回一样的列数不一样了. 第二个表中的,如果表中不只一个字段,b.* 返回更多个列了.
在MSSQL的语句中,返回的列数是一样的.可以执行.
热心网友
时间:2023-10-25 12:34
当然不对了 你前面那条语句的结果是n条+10条
你改后的是十条
select fid,fname from T_BASE_REASON_MID union select rownum,'全部' from T_BASE_REASON_MID b where rownum<=10