关于如何在查询结果中添加自动编号

往往经常有这样的需求,我需要在查询的结果中添加一列类似于Identity的数字,虽然在Client编程中并不难实现,但是有时我想留用现有的Class,不希望在Client side做额外的coding,那么就只有在Sql里面想办法了
首先介绍一种用一条SQL语句完成的办法,原理是在结果中查询大于等于该纪录的纪录条数,就可以得到它的Rank了
Example:
USE pubs
SELECT COUNT(*) AS Rank, a1.au_lname, a1.au_fname
   FROM authors a1, authors a2
   WHERE a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname
   GROUP BY a1.au_lname, a1.au_fname
   ORDER BY Rank
不过呢,这种方法有它的局限性,第一是性能不好,第二是如果存在相同的纪录,那么Rank就会出现并列的情况,比如出现两个2,但是没有3了
有没有别的方法呢?当然有的,SQL提供了一个IDENTITY Function,可以得到标识列的值,不过可惜的很的是,这个函数只能用于SELECT INTO语句,所以我们只好引入一个临时表了
Example:
USE pubs
SELECT IDENTITY(INT, 1, 1) AS Rank,au_lname,au_fname
   INTO #tmp
   FROM authors
SELECT * FROM #tmp
DROP TABLE #tmp
这种方法的性能和适用性都比第一种方法要强,不过缺点是必须通过几条SQL语句才能完成。
所以如果可能的话,一般还是建议在客户端完成这一操作

Thanks for your read and any advise.

时间: 2024-11-05 12:05:57

关于如何在查询结果中添加自动编号的相关文章

DataGrid中添加自动编号

datagrid 在aspx文件中的datagrid:<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" AllowPaging="True" PageSize="3" Width="593px"><Columns><asp:TemplateColumn Header

在DataGrid等控件中添加自动编号的列

datagrid|控件 一.正序 A.AllowPaging=False情况下 <asp:DataGrid id="DataGrid1" runat="server"> <Columns> <asp:TemplateColumn> <ItemTemplate> <%# Container.ItemIndex + 1%> </ItemTemplate> </asp:TemplateColum

SQLite中重置自动编号列的方法_SQLite

目前流行的数据库都提供了自动编号类型,SQLite也不例外.当数据库中包含自动编号的字段时,SQLite会自动建立一个名为 sqlite_sequence 的表.这个表包含两个字段:name 和 seq .name字段记录了自动编号字段所在的表,seq字段记录了当前用到的序号(下一条记录的编号就是当前序号加1). 在开发过程中,我们经常要把表重置.也就是说把表中的记录全部清空,并把自动编号归0.在SQLite中,只需要修改 sqlite_sequence 表就可以了: 复制代码 代码如下: UP

如何在Word 2013中添加自动更正内容

Word2013具有的"自动更正"功能默认包含一些最常用的拼写错误更正和常见符号自动更正,用户可以根据实际需要添加自动更正内容,操作步骤如下所述: 第1步,打开Word2013文档窗口,依次单击"文件"→"选项"命令,如图2013080701所示. 图2013080701 单击"选项"命令 第2步,在打开的"Word选项"对话框中切换到"校对"选项卡,在"自动更正选项"

怎样在Word2013中添加自动更正内容

  第1步,打开Word2013文档窗口,依次单击"文件"→"选项"命令,如图1所示. 图1 单击"选项"命令 第2步,在打开的"Word选项"对话框中切换到"校对"选项卡,在"自动更正选项"区域单击"自动更正选项"按钮,如图2所示. 图2 单击"自动更正选项"按钮 第3步,打开"自动更正"对话框,并切换到"自动更正&

在Word2007中添加自动更正条目

  Word2007具有的"自动更正"功能默认包含一些最常用的拼写错误更正条目和常见符号自动更正条目,用户可以根据实际需要添加自动更正条目,操作步骤如下所述: 第1步,打开Word2007文档窗口,依次单击Office按钮→"Word选项"按钮,如图1所示. 图1 单击"Word选项"按钮 第2步,在打开的"Word选项"对话框中切换到"校对"选项卡,在"自动更正选项"区域单击"

教你如何在Word中取消自动编号

Word的"自动编号"就 是在每次换行时,自动为新段落添加编号,而且即使添删段落,自动编号也能自 动改动编号.但由于我们有时并不需要Word这个自做多情的殷勤,那又怎么取消 它呢? 一.按键取消 (1)最简单的,就是在换行后,用每天常用的退格键删除一下,但只能取得一 时之效,下面的段落不需要时,难道还要反复删除吗? (2)暂时的,取消自动编号吧,可以在换行时按"Shift+Enter"键,Word就 不会自动编号,等你需要下个段落编号时,回车一下,Word就会按照原

SQL server 2005中设置自动编号字段的方法_mssql2005

如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性.在每个表中只能设置一个列的标识属性. 具有标识属性的列包含系统生成的连续值,该值唯一地标识表中的每一行(例如,雇员标识号).在包含标识列的表中插入值时,Microsoft SQL Server 将基于上一次使用的标识值(标识种子属性)和在创建列时指定的增量值(标识增量属性)自动生成下一个标识符. 注意: 只能为不允许空值且数据类型为 decimal.int.numeric.smallint.bigin

sql server中重置自动编号

server 关于SQLSERVER中字段为自动编号类型的重置 在SQLSERVER中的语句如下: 1. truncate table tablename2. DBCC CHECKIDENT (tablename,reseed,1)