三种数据库实现分页

获取到的第11-15条记录

sql server: 

SELECT TOP 5 * FROM 表名 WHERE ID >
(SELECT MAX(ID) FROM(SELECT TOP 10 ID FROM 表名 ORDER BY ID) AS TEMP1) --(第10条的id)

 这个理解起来也简单,先把第十条记录的id找出来(当然这里面是直接使用MAX()进行查找,MIN()函数的用法也是类似的),然后再对比取比第十条记录的id大的前5条记录即为我们需要的结果 也就是11到15。


MySQL:

 MySQL有个专门针对查询出一段数据的语句limit,使用起来非常的方便。

 select * from t_user limit 2,3   --注意是第2条数据之后,不包含第2条数据。3代表总共查询3条记录 如果是11到15的话就是limt 10,5

Oracle:

select * from

(select rownum id ,e.* from emp e where rownum<16) e where id>10

--获取薪水从高到低排序的第5到9条记录

select * from (select rownum ro,se.* from (select * from emp order by sal desc) se)
            where ro>=5 and ro <=9;


1.首先rownum是基于结果集进行编号的。。

2.ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如 果你用>,>=,=,between……and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下 条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。

3.列如:select se.*,rownum ro from scott.emp se where ro>5;

从emp表中,取出第一条记录,结果集中现在为空,rownum根据结果集,给它编号1,然后进行条件判断,不满足,丢掉。取出第二条记录,编号为1.。。。。

所以没有一条记录满足条件,自然查询结果为空了。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap本身并不提供连接数据库的功能,但是可以使用一些其他的工具和技术来实现连接数据库实现分页功能。以下是一些常用的方法: 1. 使用服务器端脚本语言如PHP、Node.js等连接数据库,查询数据并生成分页HTML代码。然后将生成的HTML代码嵌入到Bootstrap页面中。例如,使用PHP和MySQL实现分页: ```php <?php // 连接MySQL数据库 $mysqli = new mysqli("localhost", "username", "password", "database"); // 查询数据 $result = $mysqli->query("SELECT COUNT(*) FROM mytable"); $row = $result->fetch_assoc(); $total = $row['COUNT(*)']; // 数据总数 $pagesize = 10; // 每页显示的记录数 $pagecount = ceil($total / $pagesize); // 总页数 if (!isset($_GET['page'])) { $page = 1; } else { $page = intval($_GET['page']); } $start = ($page - 1) * $pagesize; // 当前页的起始记录 $result = $mysqli->query("SELECT * FROM mytable LIMIT $start, $pagesize"); // 生成分页HTML代码 $html = '<ul class="pagination">'; if ($page > 1) { $html .= '<li class="page-item"><a class="page-link" href="?page='.($page-1).'">上一页</a></li>'; } else { $html .= '<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>'; } for ($i = 1; $i <= $pagecount; $i++) { if ($i == $page) { $html .= '<li class="page-item active"><a class="page-link" href="#">'.$i.'</a></li>'; } else { $html .= '<li class="page-item"><a class="page-link" href="?page='.$i.'">'.$i.'</a></li>'; } } if ($page < $pagecount) { $html .= '<li class="page-item"><a class="page-link" href="?page='.($page+1).'">下一页</a></li>'; } else { $html .= '<li class="page-item disabled"><a class="page-link" href="#">下一页</a></li>'; } $html .= '</ul>'; // 输出表格和分页 echo '<table class="table">'; echo '<thead><tr><th>ID</th><th>Name</th></tr></thead>'; echo '<tbody>'; while ($row = $result->fetch_assoc()) { echo '<tr><td>'.$row['id'].'</td><td>'.$row['name'].'</td></tr>'; } echo '</tbody>'; echo '</table>'; echo $html; // 关闭数据库连接 $mysqli->close(); ?> ``` 2. 使用JavaScript框架如AngularJS、React等连接数据库并生成分页HTML代码。这种方法通常需要编写一些JavaScript代码、HTML模板和服务器端API接口来实现。例如,使用AngularJS和Node.js实现分页: ```html <div ng-app="myApp" ng-controller="myCtrl"> <table class="table"> <thead> <tr> <th>ID</th> <th>Name</th> </tr> </thead> <tbody> <tr ng-repeat="item in data"> <td>{{item.id}}</td> <td>{{item.name}}</td> </tr> </tbody> </table> <ul class="pagination"> <li ng-class="{disabled: page == 1}"><a href="#" ng-click="prev()">上一页</a></li> <li ng-class="{active: p == page}" ng-repeat="p in pages"><a href="#" ng-click="goto(p)">{{p}}</a></li> <li ng-class="{disabled: page == pageCount}"><a href="#" ng-click="next()">下一页</a></li> </ul> </div> <script src="https://cdn.bootcss.com/angular.js/1.7.5/angular.min.js"></script> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope, $http) { $scope.pageSize = 10; $scope.pageCount = 0; $scope.page = 1; $scope.pages = []; $scope.loadData = function() { var start = ($scope.page - 1) * $scope.pageSize; $http.get('/api/data?start=' + start + '&pagesize=' + $scope.pageSize) .then(function(response) { $scope.data = response.data; }); }; $scope.loadPage = function(page) { if (page < 1 || page > $scope.pageCount) { return; } $scope.page = page; $scope.loadData(); }; $scope.prev = function() { $scope.loadPage($scope.page - 1); }; $scope.next = function() { $scope.loadPage($scope.page + 1); }; $scope.goto = function(page) { $scope.loadPage(page); }; $http.get('/api/count') .then(function(response) { $scope.pageCount = Math.ceil(response.data / $scope.pageSize); $scope.pages = []; for (var i = 1; i <= $scope.pageCount; i++) { $scope.pages.push(i); } $scope.loadData(); }); }); </script> ``` 在上面的示例中,`$http`服务用于连接Node.js服务器端API接口获取数据和总记录数。服务器端API接口可以使用Express框架编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值