當前位置:首頁 » 編程語言 » sql自動編號怎麼解決
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql自動編號怎麼解決

發布時間: 2023-01-07 07:03:08

1. sql查詢讓一個欄位自動編號

DB2/ Oracle /SQL server 2005以上可以用這個
select row_number() over(order by name), name, age
from student

其他資料庫很難實現

2. SQL的主鍵如何自動編號

1:查詢分析器操作
ALTER TABLE 123
ADD
CONSTRAINT PK_BH
PRIMARY KEY 編號
2:企業管理器
右鍵單擊表123--選擇'設計表'--打開表設計器--選中'編號'右鍵單擊--'設置主鍵'
會在編號上顯示一把鑰匙
設置成功

"設置主鍵 "後選中"數據類型"把它的"標識"值設置為'是',你可以自己定義'種子'和'增量'
種子=初始值
增量=每一條記錄增加的數值,
如種子設置為1,增量也是1,那麼記錄1=1 記錄2=2
如種子設置為4,增量也是2,那麼記錄1=4,記錄2=6

3. 關於SQL自動編號

在企業管理器中建表:
用企業管理器打開表後選擇修改欄位→把下面欄位屬性的【標識】選項選擇為【是】→如果需要定義【初始值(標識種子)】和【每次遞增值(標識遞增量)】的話定義一下就可以了
直接用sql建表
create
table
表名(
欄位名1
int
identity(1,1)
--這是從【一】開始每次自動加【一】的自動編號
欄位名2
int
identity(1,2)
--這是從【一】開始每次自動加【二】的自動編號
欄位名3
int
identity(2,2)
--這是從【二】開始每次自動加【二】的自動編號
)
---
以上,希望對你有所幫助。

4. 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

5. sql資料庫的主鍵自動編號怎麼弄的啊

1.
首先刪除主鍵,
然後重新創建主鍵,
重新創建主鍵的時候,
需要說明本主鍵是使用
非聚集索引
primary
key
nonclustered
(
sno
)
2.
a:
pad_index
=
{
on
|
off
}
指定索引填充。默認值為
off。
on
fillfactor
指定的可用空間百分比應用於索引的中間級頁。
off
或不指定
fillfactor
考慮到中間級頁上的鍵集,將中間級頁填充到接近其容量的程度,以留出足夠的空間,使之至少能夠容納索引的最大的一行。
b:
fillfactor
=fillfactor
指定一個百分比,指示在創建或重新生成索引期間,資料庫引擎對各索引頁的葉級填充的程度。fillfactor
必須為介於
1

100
之間的整數值。默認值為
0。如果
fillfactor

100

0,則資料庫引擎將創建完全填充葉級頁的索引。
c:
ignore_p_key
=
{
on
|
off
}
指定在插入操作嘗試向唯一索引插入重復鍵值時的錯誤響應。ignore_p_key
選項僅適用於創建或重新生成索引後發生的插入操作。當執行
create
index、alter
index

update
時,該選項無效。默認值為
off。
on
向唯一索引插入重復鍵值時將出現警告消息。只有違反唯一性約束的行才會失敗。
off
向唯一索引插入重復鍵值時將出現錯誤消息。整個
insert
操作將被回滾。
d:
statistics_norecompute
=
{
on
|
off}
指定是否重新計算分發統計信息。默認值為
off。
on
不會自動重新計算過時的統計信息。
off
啟用統計信息自動更新功能。
若要恢復統計信息自動更新,請將
statistics_norecompute
設置為
off,或執行
update
statistics
但不包含
norecompute
子句。
e:
on
[primary]
是指
索引創建在
primary
這個文件組上。
3、
以全國的身份證為例子:
對於
身份證號碼,
有個
「唯一」
的索引
而對於
姓名,
有個
「不唯一」
的索引。
「不唯一」
的索引

雖然不能定位到唯一的某一行,
但是可以縮小范圍。定位到某些行。
4.
聚集索引
clustered
創建索引時,鍵值的邏輯順序決定表中對應行的物理順序。聚集索引的底層(或稱葉級別)包含該表的實際數據行。一個表或視圖只允許同時有一個聚集索引。

6. 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 的列設置標識屬性。此外,不能為主鍵列設置標識屬性。

(6)sql自動編號怎麼解決擴展閱讀:

關於上述標識列的引用

如果在SQL語句中引用標識列,可用關鍵字IDENTITYCOL代替,例如,若要查詢上例中ID等於1的行,

以下兩條查詢語句是等價的:

1、SELECT * FROM T_test WHERE IDENTITYCOL=1

2、SELECT * FROM T_test WHERE

7. SQL Sever 2008中,如何在已有的表中對欄位設置自動編號

在已存在數據的表中是無法定義自動編號的,可以通過以下方法解決:
比如某表結構如下:CREATE TABLE T1(userID int,Username char(10))
表T1中已有數據,且userID列均為空值,現要將userID列定義為自動編號,可以採取以下方法解決:創建新表:CREATE TABLE New_T1(userID int IDENTITY(1,1) NOT NULL,Username char(10)) 創建完畢後執行下列語句:insert into New_T1(Username) select Username from T1
即可解決。

8. sql server 2008怎麼自動編號

注意:只能為不允許空值且數據類型為 decimal、int、numeric、smallint、bigint 或 tinyint 的列設置標識屬性。此外,不能為主鍵列設置標識屬性。

一。通過SQL管理工具修改列的標識屬性
1.在對象資源管理器中,右鍵單擊要更改其數據類型的列所在的表,再單擊「修改」。此時,將在表設計器中打開該表。
2.清除要更改的列的「允許空」復選框。
3.在「列屬性」選項卡中,展開「標識規范」屬性。
4.單擊「是標識」子屬性的網格單元格,然後從下拉列表中選擇「是」。
5.在「標識種子」單元格中鍵入值。此值將賦給表中的第一行。默認情況下將賦值 1。
6.在「標識增量」單元格中鍵入值。此值是基於「標識種子」依次為每個後續行增加的增量。默認情況下將賦值 1。
二。SQL語句來創建
創建表時指定自動編號的欄位
CREATE TABLE [dbo].[UserInfor](
[UserID] [int] IDENTITY(100,2) NOT NULL, --此處可指定開始值及每次增長步長
[UserName] [nchar](10) NOT NULL, )

9. mysql怎麼設置自動編號呢

1、單擊「保存更改」按鈕。

10. SQL員工自動編號

告訴你原理,至於觸發器 則自己去寫.....我們要自動編號的話還要建立一個索引....通過索引來進行操作會簡單很多...index=identity(int,1,1)
增加一個這樣的欄位.
然後,查找出你需要的拼音字母前兩個
declare @py varchar(2)
set @py=''
select @py=@py+字母欄位 from 拼音表 where @姓名 like '%+漢字欄位+%'
order by charindex(rtrim(漢字欄位),@姓名) asc
這么查就把前面兩個拼音字母查出來了,你對姓名表進行遍歷...
然後分組查詢屬於該姓名的最大id
select @maxid=max(cast(substring(3,len(id)) as int ) from
(
select * from 表 where substring(id,1,2)=@py
)a

然後加1 ,剩下的自己寫.注意當查詢不到的時候 @maxid 要等於0