视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何通用存储过程来对MySQL分页查询进行操作
2020-11-09 14:13:12 责编:小采
文档


以下的文章主要描述的是通用存储过程来对MySQL分页查询进行正确的操作,你如果对MySQL分页查询进行正确的操作有兴趣的话你就可以点击以下的文章进行观看了。望你浏览之后能有所收获。 前段时间没有给出SQLServer转到MySQL(和PHP搭配之最佳组合)的通用存储过

以下的文章主要描述的是通用存储过程来对MySQL分页查询进行正确的操作,你如果对MySQL分页查询进行正确的操作有兴趣的话你就可以点击以下的文章进行观看了。望你浏览之后能有所收获。

前段时间没有给出SQLServer转到MySQL(和PHP搭配之最佳组合)的通用存储过程,本着共享的精神,为大家奉献这段MySQL分页查询通用存储过程,假设所用数据库为guestbook:

  1. use guestbook;
  2. delimiter $$
  3. drop procedure if exists prc_page_result $$
  4. create procedure prc_page_result (
  5. in currpage int,
  6. in columns varchar(500),
  7. in tablename varchar(500),
  8. in sCondition varchar(500),
  9. in order_field varchar(100),
  10. in asc_field int,
  11. in Prima(最完善的虚拟主机管理系统)ry_field varchar(100),
  12. in pagesize int
  13. )
  14. begin
  15. declare sTemp varchar(1000);
  16. declare sSql varchar(4000);
  17. declare sOrder varchar(1000);
  18. if asc_field = 1 then
  19. set sOrder = concat(' order by ', order_field, ' desc ');
  20. set sTemp = '<(select min';
  21. else
  22. set sOrder = concat(' order by ', order_field, ' asc ');
  23. set sTemp = '>(select max';
  24. end if;
  25. if currpage = 1 then
  26. if sCondition <> '' then
  27. set sSql = concat('select ', columns, ' from ', tablename, ' where ');
  28. set sSql = concat(sSql, sCondition, sOrder, ' limit ?');
  29. else
  30. set sSql = concat('select ', columns, ' from ', tablename, sOrder, ' limit ?');
  31. end if;
  32. else
  33. if sCondition <> '' then
  34. set sSql = concat('select ', columns, ' from ', tablename);
  35. set sSql = concat(sSql, ' where ', sCondition, ' and ', Prima(最完善的虚拟主机管理系统)ry_field, sTemp);
  36. set sSql = concat(sSql, '(', Prima(最完善的虚拟主机管理系统)ry_field, ')', ' from (select ');
  37. set sSql = concat(sSql, ' ', Prima(最完善的虚拟主机管理系统)ry_field, ' from ', tablename, sOrder);
  38. set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder);
  39. set sSql = concat(sSql, ' limit ?');
  40. else
  41. set sSql = concat('select ', columns, ' from ', tablename);
  42. set sSql = concat(sSql, ' where ', Prima(最完善的虚拟主机管理系统)ry_field, sTemp);
  43. set sSql = concat(sSql, '(', Prima(最完善的虚拟主机管理系统)ry_field, ')', ' from (select ');
  44. set sSql = concat(sSql, ' ', Prima(最完善的虚拟主机管理系统)ry_field, ' from ', tablename, sOrder);
  45. set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder);
  46. set sSql = concat(sSql, ' limit ?');
  47. end if;
  48. end if;
  49. set @iPageSize = pagesize;
  50. set @sQuery = sSql;
  51. prepare stmt from @sQuery;
  52. execute stmt using @iPageSize;
  53. end;
  54. $$
  55. delimiter;

可以存储为数据库脚本,然后用命令导入:

MySQL(和PHP搭配之最佳组合) -u root -p < pageResult.sql;

调用:

  1. call prc_page_result(1, "*", "Tablename", "", "columnname", 1, "PKID", 25);

以上的相关内容就是对MySQL分页查询通用存储过程的介绍,望你能有所收获。

下载本文
显示全文
专题