Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL for Oracle命令_Sql_Oracle - Fatal编程技术网

SQL for Oracle命令

SQL for Oracle命令,sql,oracle,Sql,Oracle,MYSQL: 如何将其转换为Oracle?您必须使用rownum属性,但必须将其应用于已排序的结果集,并且需要将其从内部查询积分传递给Bob Jarvis和Daniel Hilgarth:检查注释中给出的解释和链接。应该是这样的: SELECT * FROM book ORDER BY $sidx $sord LIMIT $start , $limit; 10g以后 我不熟悉oracle语法,但您可以使用ROW_NUMBER函数对行进行排序,然后选择排序介于@start和@limit之间的行:

MYSQL:

如何将其转换为Oracle?

您必须使用rownum属性,但必须将其应用于已排序的结果集,并且需要将其从内部查询积分传递给Bob Jarvis和Daniel Hilgarth:检查注释中给出的解释和链接。应该是这样的:

SELECT * FROM book ORDER BY $sidx $sord LIMIT $start , $limit;
10g以后


我不熟悉oracle语法,但您可以使用ROW_NUMBER函数对行进行排序,然后选择排序介于@start和@limit之间的行:


StackOverflow不是语言翻译服务。如果您有一个特定的问题转换为Oracle,我们可以帮助它。您可能想考虑使用页面顶部的搜索框以避免未来的投票和关闭。FWIW,Oracle等价于极限的问题的规范答案是。分享和享受。太赫兹ppl非常感谢您的帮助。RB每个人都意识到了他的意图,但更感兴趣的是给这个一个完美的ok。再次感谢那些帮助过我的人-1:rownum在where子句之后应用。有关详细信息,请参阅和。您的查询不会返回任何行。@DanielHilgarth您能解释一下这个答案与您的答案有什么不同吗?为什么实际返回的行不止是“否”行?我相信@DanielHilgarth试图说查询应该执行类似于SELECT b*中的SELECT*,rownum作为book b中的row_num,按$sidx$sord排序,其中row_num介于$start和$start+limit之间。您需要将内部查询生成的rownum作为一个单独的变量提取出来,以使其在外部查询中可见。分享和享受。@raina77ow:如果你愿意阅读提供的链接,你已经知道答案了。基本上:查询返回的第一行的rownum=1。第二个函数的rownum=2。如果您说rownum>1,那么将不会返回任何行,因为您首先需要返回一行以获得rownum>1。第一个链接的工作方式是使用小于50的rownum,即前50行。你的小提琴在1到3之间工作。将一个替换为两个,将不会得到任何结果。有点难以解释,这就是为什么我在上一篇评论中链接了作者来源。@BobJarvis非常感谢代码和解释。请注意提及否决投票的原因。提供的查询中有什么错误吗?我看不到对这个问题的否决票。。?单击向上投票和向下投票箭头之间的数字以查看投票总数。
SELECT * FROM
(SELECT b.*, rownum as row_num FROM book b ORDER by $sidx $sord)
WHERE row_num BETWEEN $start AND $start + $limit;
WITH CTE AS(SELECT  b.*, Row_Number() OVER(ORDER BY SIDX,SORD) AS Rn FROM BOOK b)
SELECT *
FROM CTE
WHERE Rn BETWEEN STARTLIMIT AND ENDLIMIT
   SELECT *
   FROM 
   (
       select *,
           ROW_NUMBER() OVER (ORDER BY ID DESC) AS rank
       FROM book
   )
   WHERE rank BETWEEN @start AND @end
   /* OR
   WHERE BETWEEN ((@PageNum - 1) * @PageSize + 1)
     AND (@PageNum * @PageSize)
   /*
select * from(
select rownum as row_num, id from t
  )
where row_num between :start and :start+:limit