sql自動編號類型
A. sql 自定義的自動編號求助
查詢時加序號
a:沒有主鍵的情形:
Select identity(int,1,1) as iid,* into #tmp from TableName
Select * from #tmp
Drop table #tmp
b:有主鍵的情形:
Select (Select sum(1) from TableName where KeyField <= a.KeyField) as iid,* from TableName a
eg:
select (select sum(1) from user_Admin where id<=a.id) as ID,id,displayName from user_Admin a order by a.ID asc
結果:
------------------------------------------------------------
USE 北風貿易;
GO
/* 方法一*/
SELECT 序號= (SELECT COUNT(客戶編號) FROM 客戶 AS LiMing
WHERE LiMing.客戶編號<= Chang.客戶編號),
客戶編號, 公司名稱
FROM 客戶 AS Chang ORDER BY 1;
GO
/* 方法二: 使用SQL Server 2005 獨有的RANK() OVER () 語法*/
SELECT RANK() OVER (ORDER BY 客戶編號 DESC) AS 序號,
客戶編號, 公司名稱
FROM 客戶;
GO
/* 方法三*/
SELECT 序號= COUNT(*), LiMing.客戶編號, LiMing.公司名稱
FROM 客戶 AS LiMing, 客戶AS Chang
WHERE LiMing.客戶編號>= Chang.客戶編號
GROUP BY LiMing.客戶編號, 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
------------分頁使用---------------------------
SELECT RANK() OVER (ORDER BY id asc) AS no,* into #temp
FROM Bbs_reply select * from #temp where no between 1 and 100 drop table #temp
B. 關於SQL自動編號
在企業管理器中建表:
用企業管理器打開表後選擇修改欄位→把下面欄位屬性的【標識】選項選擇為【是】→如果需要定義【初始值(標識種子)】和【每次遞增值(標識遞增量)】的話定義一下就可以了
直接用sql建表
create
table
表名(
欄位名1
int
identity(1,1)
--這是從【一】開始每次自動加【一】的自動編號
欄位名2
int
identity(1,2)
--這是從【一】開始每次自動加【二】的自動編號
欄位名3
int
identity(2,2)
--這是從【二】開始每次自動加【二】的自動編號
)
---
以上,希望對你有所幫助。
C. SQL資料庫列自動生成編號
兩種方法:
1、用Truncate
TRUNCATETABLEname可以刪除表內所有值並重置標識值
2、用DBCC CHECKIDENT
DBCCCHECKIDENT('table_name',RESEED,new_reseed_value)如dbcc checkident ("bc_pos",reseed,1)即可,
但如果表內有數據,則重設的值如果小於最大值可能會有問題,這時可以用 dbcc checkident("bc_pos",reseed)即可自動重設值。
注意:
只能為不允許空值且數據類型為 decimal、int、numeric、smallint、bigint 或 tinyint 的列設置標識屬性。此外,不能為主鍵列設置標識屬性。
(3)sql自動編號類型擴展閱讀:
關於上述標識列的引用
如果在SQL語句中引用標識列,可用關鍵字IDENTITYCOL代替,例如,若要查詢上例中ID等於1的行,
以下兩條查詢語句是等價的:
1、SELECT * FROM T_test WHERE IDENTITYCOL=1
2、SELECT * FROM T_test WHERE