我正在尝试做类似的事情:
SELECT * FROM table LIMIT 10,20
Run Code Online (Sandbox Code Playgroud)
要么
SELECT * FROM table LIMIT 10 OFFSET 10
Run Code Online (Sandbox Code Playgroud)
但是使用SQL Server
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Run Code Online (Sandbox Code Playgroud)
我还发现:
SELECT TOP 10 * FROM stuff;
Run Code Online (Sandbox Code Playgroud)
...但这不是我想要做的,因为我无法指定起始限制.
我还有另一种方法吗?
另外,只是好奇,有没有一个理由为什么SQL Server不支持该LIMIT功能或类似的东西?我不想吝啬,但这听起来像DBMS需要的东西......如果确实如此,那么我很抱歉这么无知!我在过去的5年里一直在使用MySQL和SQL +所以......
我想用JDBC实现分页.我想知道的实际情况是"如何从第1页和第2页的数据库中获得前50个然后下50条记录"
我的查询是Select * from data[数据表包含20,000行]
对于第1页,我得到50条记录,对于第2页,我希望获得接下来的50条记录.如何在JDBC中有效地实现它?
我已经搜索过,发现这rs.absolute(row)是跳过第一页记录的方法,但是在大型结果集上花费了一些时间,我不想承受这么多时间.另外,我不想在查询中使用rownum和limit+ offset,因为这些不适合在查询中使用,我不知道为什么,我仍然不想在查询中使用它.
任何人都可以帮助我如何限制ResultSet分页或JDBC是否有任何方式给我们?
问题:我需要写存储过程(S)将返回行的单个页面的结果集和总的行数.
解决方案A:我创建了两个存储过程,一个返回单个页面的结果集,另一个返回标量 - 总行数.解释计划说第一个sproc的成本为9,第二个的成本为3.
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY D.ID DESC ) AS RowNum, ...
) AS PageResult
WHERE RowNum >= @from
AND RowNum < @to
ORDER BY RowNum
SELECT COUNT(*)
FROM ...
Run Code Online (Sandbox Code Playgroud)
解决方案B:我将所有内容都放在一个sproc中,方法是在结果集中的每一行添加相同的TotalRows数字.这个解决方案感觉很乱,但成本只有9,只有一个sproc,所以我倾向于使用这个解决方案.
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY D.ID DESC ) RowNum, COUNT(*) OVER () TotalRows,
WHERE RowNum >= from
AND RowNum < to
ORDER BY RowNum;
Run Code Online (Sandbox Code Playgroud)
Oracle中的分页是否有最佳实践?在实践中最常使用哪种上述解决方案?他们中的任何一个被认为是完全错误的?请注意,我的数据库将保持相对较小(小于10GB).
我正在使用Oracle 11g和最新的ODP.NET与VS2010 SP1和Entity Framework 4.4.我需要最终的解决方案才能在EF …
当你写的每一个代码都能立即工作并且你的日程安排不足时,你是否知道这种感觉:-P就像'噢,现在我有时间让它变得完美'.那就是我现在的位置^^
所以我用JSF(ui:repeat)实现了一个转发器,我想到了所有实体的分页.有没有一种简单的方法可以做到这一点?有什么要点我要考虑的?
如果有人给我一些帮助会很好.到目前为止,我的googleskills没有帮助我:-P
干杯...
请不要低估我的问题,因为我是JSP/JavaEE的新手.
我看了很多关于JSTL,Pagination的教程,但是我无法做出适当的想法来进行分页......是否有一种方法来执行分页......?
在我的程序中,我使用java类从数据库中检索搜索结果的记录,并将它们放入ArrayList并将ArrayList返回给Servlet.然后将收到的ArrayList对象分配给这样的应用程序属性
request.setAttribute("Results", results_List);
Run Code Online (Sandbox Code Playgroud)
然后使用请求调度程序,我正在加载显示jsp页面的结果.
RequestDispatcher rd = request.getRequestDispatcher("searchresults.jsp");
rd.forward(request, response);
Run Code Online (Sandbox Code Playgroud)
所以告诉我下一步做分页我的搜索结果..
我有一张包含数百万条记录的表格.为了使系统更快,我需要在我的Java代码中实现分页概念.我需要一次只获取1000条记录并处理它们,然后选择另外1000条记录并进行处理等等.我已经尝试了一些东西,但没有一个在起作用.我试过的一些事情如下 -
1) String query = "select * from TABLENAME" + " WHERE ROWNUM BETWEEN %d AND %d";
sql = String.format(query, firstrow, firstrow + rowcount);
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,当查询是SELECT * from TABLENAME Where ROWNUM BETWEEN 0 and 10它给我一个结果但是当查询是SELECT * from TABLENAME Where ROWNUM BETWEEN 10 and 20,它返回一个空的结果集.我甚至试图在DB中运行它,它返回Empty结果集(不知道为什么!!)
2)preparedStatement.setFetchSize(100);我在我的Java代码中有这个,但它仍然从表中获取所有记录.无论如何,添加此语句并不会影响我的代码.
请帮忙!