`
JavaVsServlet
  • 浏览: 10996 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

SQL Server 2000、2005数据库表无主键、无不重复值数据列分页问题处理方法

阅读更多


1、SQL Server2000

无主键、无不重复数据列:可使用多个列值组合形成不重复数据列来模拟主键。

由于2000不支持Row_NUMBER() over(order by 列名)函数,因此不能使用该函数获取唯一编号来达到模拟主键,实现分页。

建议使用分页语句语法如下:

selecttop 每页显示行数 * from 表名A where (A列+B列+C列...) not in(select top (当前页数-1)*每页显示行数) (A列+B列+C列...) from 表名A where条件 order by 列名[desc]) where条件 order by 列名[desc]

如:select top50 * from A where (A.a1+A.a2+A.a3) not in (select top ((1-1)*50) (a1+a2+a3)from A where a4 like '%张%' order by a4 desc) where a4 like '%张%' order by A.a4 desc

其中:①、A列、B列、C列为可组成不重复值组合,A列+B列+C列值为NULL时,表示A、B、C三列中有一列值为NULL,导致最终合并结果为NULL,可使用isNull函数来判断,语法为:isNull(列名,默认值),表示如果列值为空,则赋予默认值。如:(isNull(A列,'A')+isNull(B列,'B')+isNull(C列,'C')),
      ②、desc可选,加上则表示按照order by 列名降序排列。
      ③、子查询里面和外面都加where条件是为了更准确查询出记录,外面不加where条件,则查询出内容不满足条件值约束。



2、SQL Server2005

无主键、无不重复数据列:

①、可采用SQL Server 2000分页方法进行处理;

②、使用Row_NUMBER() over(order by 列名)函数,模拟主键,来实现分页,ROW_NUMBER() over(order by 列名)函数会生成从1开始的自然数。语法如下:

select * from (selectROW_NUMBER() over(order by A列[desc] as rowNumber, * from 表名 Awhere 条件) new_A where rowNumber between 每页显示行数*(当前页-1)+1 and 每页显示行数*当前页

如:select *from (select ROW_NUMBER() over(order by A.a desc) as rowNumber,* from A where 1= 1 ) new_A where rowNumber between 100*(1-1)+1 and 100*1

其中:desc可选,加上则表示按照order by 列名降序排列。



希望该思路和解决方法,能给遇到同样棘手问题的同仁提供参考和帮助。

弱弱的说一句:没有主键的表不能称之为表。—引用论坛大神***回复。

At the last,please设计数据库及表结构的大神,在设计时加上主键,以避免其他不必要的数据操作和维护方面的麻烦事情发生。





2
10
分享到:
评论

相关推荐

    sqlserver无主键表的同步方案1

    在描述的场景中,由于医院服务器和数据库版本的限制,使用了SQL Server Integration Services (SSIS) 来解决无主键表的同步问题。SSIS 是一种强大的ETL(提取、转换、加载)工具,能够处理各种数据整合任务。然而,...

    SqlServer 永不重复的主键(非自增列)

    数据库自增列主键在数据库还原时百分百会出问题 为解决该问题特开发自定义式的主键 创建一个监控表,一个被调用的存储过程即可,推荐有存储过程编广泛使用的程序使用 调用方法 DECLARE @PKID CHAR(12)='' EXEC [dbo]....

    Oracle|Sqlserver|MySql数据库表结构一键生成工具

    "Oracle|Sqlserver|MySql数据库表结构一键生成工具" 提供了一种高效的方法来自动化这个过程,大大减轻了手动编写文档的工作量。这款工具能够支持三种主流的关系型数据库管理系统:Oracle、SQL Server和MySQL。 ...

    Sql Server 2005数据库实用教程

    首先,SQL Server 2005是微软推出的一款企业级关系型数据库管理系统,其强大的数据处理能力和安全性使其在各类企业中广泛应用。本教程会涵盖SQL Server 2005的安装与配置过程,确保用户能够顺利搭建数据库环境。 在...

    SQL Server 2005数据库简明教程PPT

    第2部分(第3~9章)是本书的重点,也是读者深入学习SQL Server 2005的基础,详细介绍了SQL Server 2005的安装和配置过程,如何创建和管理数据库、数据表,以及如何对数据进行查询、修改、输出等内容;第3部分(第10~14章)...

    导出sqlserver 2000的表结构

    在IT领域,特别是数据库管理与开发中,导出SQL Server 2000的表结构是一项常见且重要的任务。这不仅对于数据迁移、备份、分析或文档化数据库结构至关重要,而且也是确保数据完整性和可移植性的关键步骤。下面将详细...

    sql server分页技术(SQL Server 与Access数据库相关分页技术)

    在SQL Server中,分页技术是一项关键功能,尤其在处理大量数据时,它能有效地提高查询性能并优化用户体验。在Web应用中,分页通常用于显示数据库中的数据列表,避免一次性加载所有数据导致的性能问题。以下是几种...

    sql2000附加数据库错误602解决方式

    ### SQL2000附加数据库错误602的解决方式 在使用SQL Server 2000进行数据库附加操作时,可能会遇到错误602的问题:“Could not find row in sysindexes for database ID 13, object ID 1, index ID 1. Run DBCC ...

    java 连接sqlserver数据库查询,并分页显示

    在Java编程中,连接SQL Server数据库并执行查询是常见的任务,尤其当涉及到大量数据时,分页显示就显得尤为重要。本篇文章将详细讲解如何使用Java连接SQL Server数据库,执行查询语句以及实现分页显示。 首先,我们...

    SQL2000 2005 批量附加数据库工具

    SQL2000和SQL2005批量附加数据库工具是一款高效实用的软件,专为管理和维护Microsoft SQL Server 2000及2005数据库设计。它提供了一个便捷的方式来一次性附加多个数据库,极大地提高了数据库管理员的工作效率,特别...

    SqlServer2005 打开 SqlServer2008 mdf文件

    Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...

    Sqlserver2005数据库级别异步分页

    在SQL Server 2005中,数据库级别的异步分页是一种提高大型数据集查询效率的技术,它允许应用程序以非阻塞方式获取数据,从而提高用户体验。这种技术结合了存储过程、JavaScript以及数据库的内部机制,以实现高效、...

    根据SQLServer数据表生成C#实体类。生成数据库模型.zip

    1. 数据库设计:首先需要在SQLServer中设计好数据库表,包括表名、字段名、数据类型、主键、外键等信息。 2. 生成C#实体类:使用提供的工具或源码,通过连接到SQLServer数据库,读取表结构信息,自动生成C#类。这些...

    SQLServer2000数据库驱动包

    SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在企业级数据存储、管理和分析中扮演着重要角色。在这个“SQLServer2000数据库驱动包”中,包含的三个关键文件——mssqlserver.jar、msutil.jar和...

    SQL SERVER自动导出Word数据库文档

    这个功能主要应用于SQL SERVER 2000、2005、2008这三个版本,意味着它兼容性较强,能够覆盖较早时期到较新的数据库系统。 1. **SQL Server Management Studio (SSMS)**:这是微软提供的用于管理SQL Server的主要...

    SQL Server 2005数据库的简单应用

    SQL Server 2005是微软推出的一款关系型数据库管理系统,是SQL Server系列的一个重要版本。它在数据库管理、数据存储、数据处理等方面提供了广泛的功能,适用于中小型企业及开发人员进行数据管理和应用开发。本教程...

    SQL Server 2005示例数据库 安装包 [免费版]

    教你安装SQL Server ...虽然在 SQL Server 2005中文件的结构已经发生了改变,你仍然可以连接SQL Server 2000 的数据库。但是只有选择数据库的新格式,才能体验到SQL Server 2005 的新特性,你可以任意选择一种方式。

    SQL Server数据库实验指导书 实验教程 数据库实验02 通过SQL语句创建与管理数据表.pdf

    本实验主要围绕SQL Server 2005数据库的管理和操作展开,目的是让学生掌握数据库的创建、修改、查看、删除等基本操作,以及SQL Server Management Studio的使用。实验内容包括安装SQL Server 2005、启动和配置服务、...

    SQL Server数据库中处理空值时常见问题

    外键处理:在 SQL Server 中,如果由两个列共同组成主键,而且一个子表将主键作为可为空值的外键来继承,就可能得到错误的数据。可在一个外键列中插入有效的值,但在另一个外键列中插入空值。然后,可添加一个数据表...

    sql-server中复制数据库某一个表到另一个数据库中

    在SQL Server环境中,有时我们需要将一个数据库中的某个表复制到另一个数据库中,这可能是为了备份、数据迁移或创建测试环境等目的。根据提供的标题、描述和部分代码内容,我们可以整理出一套较为完整的操作流程和...

Global site tag (gtag.js) - Google Analytics