ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL:包含记录的显示页面

2019-06-30 14:01:02  阅读:112  来源: 互联网

标签:mysql


假设以下记录:

ID  Value
=========
1.  No
2.  No
3.  No
4.  No
5.  No
6.  No
7.  Yes
8.  No
9.  No
10. No

我的记录显示的每个“页面”包含5个记录(因此第1页有记录1-5,第2页有记录6-10,依此类推……).我想显示包含值为Yes的记录的页面.请记住,我真的不知道这些记录在哪里.

我该如何查询?

解决方法:

这样的事情怎么样:

/* Work out the page */
SELECT @MatchID = ID
  FROM tbl
  WHERE Value = 'Yes'
  ORDER BY ID ASC
  LIMIT 1;

SELECT @Page = CEIL(COUNT(*) / 5)
  FROM tbl
  WHERE ID <= @MatchID;

/* Select the items on that page */
SET @Offset = (@Page - 1) * 5;

SELECT *
  FROM tbl
  ORDER BY ID ASC
  LIMIT @Offset, 5;

注意:上述内容不适合找不到@MatchID.

我不确定MySQL限制是否必须是常量,因此如果它们必须计算PHP中的偏移量,或者用于连接MySQL的任何编程语言.或者,这可能会起作用,而不是上面示例中的最后一个SELECT语句:

SET @selectSQL = CONCAT('SELECT * FROM tbl ORDER BY ID ASC LIMIT ', @Offset, ', 5');
PREPARE stmt FROM @selectSQL;
EXECUTE stmt;

标签:mysql
来源: https://codeday.me/bug/20190630/1337421.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有