首页 > 数据库 >SQL Server:分页查询

SQL Server:分页查询

时间:2023-05-25 14:12:46浏览次数:45  
标签:分页 SHOW sql Server stu SQL TABLE page ROW

一、分页查询

❓ 需求描述:客户端查询数据库数据并显示在表格中。在数据库中进行一次查询,查询结果有1050条记录,但表格row上限: 100,这时需要给本次查询记录分配 页用来显示?

可以通过固定公式进行计算(c伪代码):

# define TABLE_SHOW_ROW 100

// 在大学学生表student中查询年龄小于19岁的学生信息,并按照日期/时间排序(默认升序)
char sql_stat[] = {"select stu_id, stu_name, stu_age, stu_sex, date_time from student where stu_age < 19 order by date_time"};
int num_of_rec = sql_record_total_query(sql_stat);

char msg_page[1024] = {0};
int page;
int quotient= num_of_rec / TABLE_SHOW_ROW;
int remainder = num_of_rec % TABLE_SHOW_ROW;
if (num_of_rec > TABLE_SHOW_ROW)
{
    if (remainder > 0)
        page = quotient + 1;
    else
        page = quotient;
}
else
{
    page = 1;
}
// 打印查询结果页面信息
sprintf(msg_page, "1 of %d", page);

上一页和下一页业务逻辑(c伪代码)

int offset_val;
int page_now = active_page_get(msg_page);

if (event == click_page_up)        // 当客户端点击上一页
{
    offset_val = (page_now - 1) * TABLE_SHOW_ROW;
    --page_now;
}
else if (event == click_page_down) // 当客户端点击下一页
{
    offset_val = page_now * TABLE_SHOW_ROW;
    ++page_now;
}


char sql_stat[1024] = {0};
sprintf(sql_stat, "select stu_id, stu_name, stu_age, stu_sex, date_time from student "
                  "where stu_age < 19 order by date_time "
                  "OFFSET %d ROWS FETCH NEXT %d ROWS ONLY", offset_val, TABLE_SHOW_ROW);
sql_record_get(sql_stat, record);
table_record_show(record);
sprintf(msg_page, "%d of %d", page_now, page);

二、参考引用

7.3 SQL Server分页查询

标签:分页,SHOW,sql,Server,stu,SQL,TABLE,page,ROW
From: https://www.cnblogs.com/caojun97/p/17430330.html

相关文章

  • Windows Server 2022 中文版、英文版下载 (updated May 2023)
    WindowsServer2022正式版,2023年5月更新请访问原文链接:https://sysin.org/blog/windows-server-2022/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org早期直观体验版本21H2,根据名称预计今年秋季发布正式版(已经发布)设置和控制面板仍然混乱,麦德龙风格和经典风......
  • Mysql:低版本的mysql,5.7-,不知道root密码,如何控制(增、删、改、查)mysql.user:变相跳过mysq
    可以通过直接在mysqld的服务器上,通过os层的文件操作+为mysqld进程发送sighup(-1)信号实现。原理:低版本的mysql,5.7-,其用户账号是通过mysql系统库下的user系统表来控制的;而,mysql.user表是myisam引擎表;所以,我们只要将user.frm\user.MYD\user.MYI这3个相关数据表文件,在o......
  • 关于MYSQL连接后关闭连接问题
    因为创建连接并注册驱动时可能会错先错误,但是链接还是会进行创建 ,如果不判断连接Connection为不为空就关闭的话会引起空指针异常,同理ResultSet、PreparedStatement也是如此。创建顺序是从Connection->Preparedstatment->ResultSet,关闭顺序则是从ResultSet->Preparedstat......
  • docker启动mysql失败
    root@ecs-kc1-small-1-linux:~#dockerrun-p3306:3306mysql:8-oracle2022-03-0513:40:49+00:00[Note][Entrypoint]:EntrypointscriptforMySQLServer8.0.28-1.el8started.2022-03-0513:40:50+00:00[Note][Entrypoint]:Switchingtodedicateduser'mys......
  • docker导出mysql软件包
      查看镜像:dockerimages 导出镜像:dockersave05db07cd74c0>E:\mysql.tar 导入镜像:在新电脑上执行命令:dockerload-iC:\Docker\redis.tarC:\Docker\redis.tar为压缩文件路径,此时需要一定时间等待导入完成。dockerload-iC:\Docker\rabbitmq.tardockerloa......
  • sqlsever语句大全
    一、基础1、说明:创建数据库CREATEDATABASEdatabase-name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver—创建备份数据的deviceUSEmasterEXECsp_addumpdevice‘disk’,‘testBack’,‘c:\mssql7backup\MyNwind_1.dat’—开始备份BACKUPDATABASEpubsT......
  • Mysql表查询加强
    1. mysql 表查询--加强  7681.1 基本介绍在前面我们讲过mysq|表的基本查询,但是都是对一张表进行的查询,这在实际的软件开发中,还远远的不够。下面我们讲解的过程中,将使用前面创建三张表(emp,dept,salgrade)为大家演示如何进行多表查询1.2使用where子句  案例演示  768?如何......
  • MySQL Binlog 权限
    Checkbinlogstatus--https://github.com/alibaba/canal/wiki/AdminGuideshowvariableslike'log_bin';showvariableslike'binlog_format';MySQLBinlog权限需要三个权限SELECT,REPLICATIONSLAVE,REPLICATIONCLIENTGRANTSELECT,REPLICATIO......
  • 在Linux中优雅的安装MYSQL
        Mysql-8.0.27安装包位置:https://pan.baidu.com/s/1DFfDlnmCh3qVaj091qcpNA    提取码:vmny首先我们需要准备一个Linux环境,和一个MySql的安装包(本次采用的mysql安装包版本为:8.0.27)把文件放在linux下的/usr/local目录下对文件进行解压      ......
  • mysql删除表数据,释放空间
    1.当RDS磁盘报警的时候,不能降配时候,需要删除部分日志表,释放空间。TRUNCATE 只能删除整个表或者整个分区的数据,不能删除部分行。如果需要删除部分行,应该使用DELETE命令。使用DELETE后,空间还不能释放,执行OPTIMIZETABLEtablename;释放空间......