如果数据表本身并不内含自动地增编号的字段时, 要怎么做才能够让 SELECT 查询结果如图表 1 所示,额外增加自动递增序号呢?我们提供下列五种方法供您参考:
USE
北风贸易
;
GO
/*
方法一
*/
SELECT
序号
=
(SELECT COUNT(
客户编号
)
FROM
客户
AS
WHERE LiMing.
客户编号
<=
.
客户编号
),
客户编号
,
公司名称
FROM
客户
AS Chang ORDER BY 1;
GO
/*
方法二
:
使用
SQL Server 2005
独有的
RANK() OVER ()
语法
*/
SELECT
RANK() OVER (ORDER BY
客户编号
DESC) AS
序号
,
客户编号
,
公司名称
FROM
客户
;
GO
/*
方法三
*/
SELECT
序号
=
COUNT(*), LiMing.
客户编号
,
.
公司名称
FROM
客户
AS LiMing,
客户
AS
Chang
WHERE LiMing.
客户编号
>=
.
客户编号
GROUP BY LiMing.
客户编号
,
.
公司名称
ORDER BY
序号
;
GO
/*
方法四
建立一个「自动编号」的字段,然后将数据新增至一个区域性暂存数据表,
然后由该区域性暂存数据表中,将数据选取出来,最后删除该区域性暂存数据表
*/
SELECT
序号
= IDENTITY(INT,1,1)
,
管道
,
程序语言
,
讲师
,
资历
INTO
#LiMing
FROM
问券调查一
;
GO
SELECT
* FROM #LiMing;
GO
DROP
TABLE #LiMing;
GO
/*
方法五
使用
SQL Server 2005
独有的
ROW_NUMBER() OVER ()
语法
搭配
CTE
(一般数据表表达式,就是
WITH
那段语法)选取序号
2 ~ 4
的数据
*/
WITH
排序后的图书
AS
(SELECT ROW_NUMBER() OVER (ORDER BY
客户编号
DESC) AS
序号
,
客户编号
,
公司名称
FROM
客户
)
SELECT
* FROM
排序后的图书
WHERE
序号
BETWEEN 2 AND 4;
GO