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