把这四条sql语句从sqlsever变成oracle的sql语句,求帮忙 1C

1、SELECT top 1 MENUID+1 from app_menu
ORDER BY CAST(MENUID AS int) desc

2、SELECT top 1 id,fileName,filePath,createTime,md5,fileSize FROM VIS_file WHERE md5=#md5#

3、 SELECT top 1 USERID,REALNAME,GENDER,OTEL,OEMAIL,QQ,OADDRESS FROM org_employee where OEMAIL =#email#

4、SELECT top 1 * FROM request_apply where apply_for_id=#applyId#

5、SELECT top 10 * FROM request_apply where request_state=2

3个回答

-- SQL Server 都没必要用 TOP 的
SELECT MAX(MENUID)+1 from app_menu

-- 其它的 SELECT TOP 都按照下面的方式转换
-- 必须明确指定排序才能选取前n条
SELECT id,fileName,filePath,createTime,md5,fileSize
  FROM (
        SELECT id,fileName,filePath,createTime,md5,fileSize,
               ROW_NUMBER() OVER(ORDER BY id) rn
          FROM VIS_file
         WHERE md5=#md5#
       ) t
 WHERE rn <= 1

这个不就是排序吗,你对照着Oracle的排序排就是了

你其实困惑的应该就是Oracle里没有 Top n * 这种语法吧,这个你在 Oracle里使用 ROW_NUMBER() 得到记录号后,外面再包条件就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!