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

SQL增加自递的伪序号列

阅读更多
一、让SELECT查询结果额外增加自递的伪序号列
在基于数据库的系统的开发过程中,有时需要让select返回的查询结果中存在一列实际的数据库表中并不存在的序号列,即在查询结果中额外增加自增的伪序号列。从网络上可以找到一些解决方案,但总结起来主要有三种:
1.使用数据库自带的序号函数实现
Oracle提供的ROWNUM,SQL Server 2005提供的RANK,ROW_NUMBER都可以比较简单地实现这种需求,不过这种方法对我并不适用,因为我用的是SQL SERVER 2000。

2.使用临时表实现
SQL的IDENTITY函数可以提供自增的序号,但只能用在带有INTO table子句的SELECT语句中,所以如果可以使用临时表的情况下可以使用这种实现方法。和第一种方法一样,这种实现方法对我也不适用,因为现在的项目规定不能使用临时表。
eg:
SELECT IDENTITY(INT,1,1) as seq,field1,field2,...,fieldn INTO tmpTableName FROM srcTableName;
SELECT * FROM tmpTableName;
DROP TABLE tmpTableName;

3.使用SQL标准语法实现
第三种思路是:将结果集中能确定一行数据唯一性的某列或多列组合成标识符,再把结果集中小于等于标识符的记录数合计成一列,从而满足需求。
eg:
SELECT (SELECT COUNT(id) FROM srcTableName AS tbl1 WHERE tbl1.id<=tbl2.id) as seq,field1,field2,...,fieldn
FROM srcTableName AS tbl2 ORDER BY 1 ;
二、使用INSERT添加行
INSERT语句可给表添加一个或多个新行,增加单行的语法没什么可说的,此处描述的是使用多行的情况,语法为:
INSERT INTO destTable (field1,field2,...,fieldn) FROM SELECT field1,field2,...,fieldn FROM srcTable
在维护系统时,经常能在遗留代码里发现这样的新增多条记录实现方式:
1.循环构造多条插入语句,再执行一次批处理保存。
2.循环构造多条插入语句,每条语句执行一次保存。
对于使用第一种方式来新增从其他数据库表中选择的记录的做法,我觉得是对数据库资源的浪费,因为通常情况下这种实现方式完全可以通过一条INSERT语句实现。
可能你会说主键的生成是一个问题,但我并不认为这会成为问题,在select时生成主键并不困难,上文就提到了内容就可以在此处使用。对于采用第二种方法的“先辈”,我只能彻底无语,因为这种方式根本就没有考虑数据库的执行效率和事务的完整性,一旦保存过程被中断就会导致数据的不完整问题的出现。

分享到:
评论

相关推荐

    SQL Server 2017 安装序列号

    SQL Server 2017 安装序列号、版本win 64位操作系统使用。

    SQL 2016 各版本序列号

    测试可用,仅作为测试使用,不可用作商业用途,谢谢配合

    SQL SERVER 20122014 序列号密钥

    SQL SERVER 2012和2014 序列号密钥集合,由网上搜集。

    Sql server 2008 r2 各版本序列号

    Sql server 2008 r2 ,亲测可用,全版本序列号.

    SQL.rar_自动序列号

    在SQL Server数据库系统中,序列号通常用于标识和跟踪数据记录,特别是在主键字段中,它们确保了数据的唯一性。"SQL.rar_自动序列号"这个压缩包文件可能包含了如何在SQL Server中创建和使用自动序列号,特别是生成...

    SQL 2008 安装序列号

    根据提供的文件信息,我们可以了解到这段文字主要涉及到的是SQL Server 2008的安装序列号及相关权限设置。接下来,我们将详细解析这些知识点。 ### SQL Server 2008 安装序列号 #### 1. **序列号的重要性** - ...

    sqlassist & 相应注册序列号

    《SQL Assistant:高效数据库管理与优化工具》 SQL Assistant是一款专为数据库管理和优化设计的强大工具,它集成了SQL代码格式化、智能提示、查询优化等多种功能,极大地提升了SQL语句的编写效率和数据库操作的便利...

    SQL+Server+2000+2005+2008+通用序列号

    SQL+Server+2000+2005+2008+通用序列号

    sqlserver2012序列号,亲测可用

    本人一直使用的序列号,分享出来欢迎下载 SQL Server SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于 Microsoft SQL Server Microsoft SQL Server 1988 年...

    SQL Assistant(SQL助手) 含序列号和破解替换文件-不会被拦截

    分享SQL Assistant(SQL助手) 。内含SQL Assistant安装包、序列号以及替换文件。亲测,17.X版本的SQL Server依然可用。

    SQL Assistant v7.xx 序列号

    8. **序列号激活**:描述中提到的"SQL Assistant v7.xx 序列号"是用于注册软件的,通过提供的KeyGen.exe文件(钥匙生成器),用户可以获得有效的序列号来激活软件,享受全部功能。 9. **安全性考虑**:需要注意的是...

    SQL Server 2008 序列号

    SQL Server 2008 序列号

    sql server 2008 版本内容和序列号

    从给定的文件信息中,我们可以提炼出关于SQL Server 2008版本内容与序列号的关键知识点。尽管原描述简短且包含了一些不易理解的字符,以下将详细阐述涉及的重要概念。 ### SQL Server 2008版本概览 SQL Server ...

    如何找回SQL Server实例安装时的序列号

    当需要再次安装SQL Server时,如果序列号找不到了,可以试着从已经安装的实例里找回序列号,因为安装完SQL Server后,序列号(Product Key)被保存在注册表里;  MSDN订阅下载的安装包是内置序列号的,则没有这个...

    sql2000的安装序列号

    "序列号.txt"这个文件很可能是包含有效SQL2000序列号的文本文件。在安装过程中,用户通常会被提示输入序列号,此时打开这个文件,复制其中的序列号并粘贴到安装向导的相应位置即可。值得注意的是,使用未经授权的...

    sql2008r2序列号.txt

    sqlserver2008r2序列号,支持32位和64位版本。详见文档

    sql2000序列号

    sql2005序列号,用于激活sql2000

    SQL Assistant 4.6序列号

    在版本4.6中,SQL Assistant进一步提升了其性能和用户体验,增加了更多实用特性,使之成为众多数据库开发者首选的辅助工具之一。 #### 二、SQL Assistant 4.6版本特点 ##### 2.1 智能提示增强 在SQL Assistant ...

    SQL Server 2008数据库 企业版 序列号

    SQL Server 2008数据库 企业版 序列号 注册码 破解

    sql序列号现成的

    在探讨“SQL序列号现成的”这一主题时,我们需要明确几个关键概念:SQL软件、序列号的作用及其重要性、以及如何合法获取和使用这些序列号。根据提供的标题、描述和部分上下文信息,我们可以深入分析与SQL序列号相关...

Global site tag (gtag.js) - Google Analytics