SQL for Oracle命令
MYSQL: 如何将其转换为Oracle?您必须使用rownum属性,但必须将其应用于已排序的结果集,并且需要将其从内部查询积分传递给Bob Jarvis和Daniel Hilgarth:检查注释中给出的解释和链接。应该是这样的: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之间的行:
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