关于SQL数据库自动编号取值的问题

关于SQL数据库自动编号取值的问题,第1张

设置一个表,表里面记录最后一次添加记录的编号,用一个存储过程,然后用这个编号加1的方法,并返回生成的记录号,没见过有什么漏洞,唯一可能就是形成编号不连续,也就是生成过之后没有用,或是已经删除,我做测试的时候两个客户端分别添加10000条记录,在1分钟左右的时间内完成,无重号现象,我参与过的一个医院系统就是用这种方法

假设你SHEET1中公司名称从A2到AN,对应的金额数为B2到BN。SHEET2

中公司名称也在A2到AN,我们在SHEET2中的B2开始输入SHEET1中的金额数。

我们在SHEET2,B2单元格中输入=vlookup(A2,SHEET1!A:B,2,0),把公式从B2一直拉到你需要的BN就可以了。

注:如果你的SHEET1的名字改了,公式中相应的位置应该相应改变

“PS:可是我SHEET2里单位名称顺序和SHEET1里不一样,导致这个公式取的数在SHEET2里根本没对应起来,张冠李戴了呀”——vlookup命令其实就是让你选择一个你需要被查找的对象(A2),在一个范围内查找(SHEET1!A:B),并将查找到的结果填写到单元格内(2——为SHEET1!A:B中A列,B列中的第二列,即B列的数据填写到该单元格内),这样解释不知道你明白不

函数VLOOKUP(lookup_value,table_array,col_index_num,range_lookup):

Lookup_value

为需要在数组第一列中查找的数值。Lookup_value

可以为数值、引用或文本字符串。

Table_array

为需要在其中查找数据的数据表。可以使用对区域或区域名称的引用,例如数据库或列表。

如果

range_lookup

TRUE,则

table_array

的第一列中的数值必须按升序排列:…、-2、-1、0、1、2、…、-Z、FALSE、TRUE;否则,函数

VLOOKUP

不能返回正确的数值。如果

range_lookup

FALSE,table_array

不必进行排序。

通过在“数据”菜单中的“排序”中选择“升序”,可将数值按升序排列。

Table_array

的第一列中的数值可以为文本、数字或逻辑值。

文本不区分大小写。

Col_index_num

table_array

中待返回的匹配值的列序号。Col_index_num

1

时,返回

table_array

第一列中的数值;col_index_num

2,返回

table_array

第二列中的数值,以此类推。如果

col_index_num

小于

1,函数

VLOOKUP

返回错误值值

#VALUE!;如果

col_index_num

大于

table_array

的列数,函数

VLOOKUP

返回错误值

#REF!。

Range_lookup

为一逻辑值,指明函数

VLOOKUP

返回时是精确匹配还是近似匹配。如果为

TRUE

或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于

lookup_value

的最大数值;如果

range_value

FALSE,函数

VLOOKUP

将返回精确匹配值。如果找不到,则返回错误值

#N/A。

--建立测试表

tableA

(type=“书籍”的不足100条),tableB

(type=“书籍”的多于100条)

create

table

tableA(id

int

identity(1,1),type

nvarchar(8))

create

table

tableB(id

int

identity(1,1),type

nvarchar(8))

go

--向表tableA循环插入测试语句

declare

@a

int

set

@a=0

while

(@a<120)

begin

if

@a<20

insert

into

tableA(type)values('报刊')--20本是'报刊'

else

if

@a<40

insert

into

tableA(type)values('光盘')--20本是'光盘'

else

if

@a<60

insert

into

tableA(type)values('漫画')--20本是'漫画'

else

if

@a<80

insert

into

tableA(type)values('书籍')--20本是'书籍'

else

if

@a<100

insert

into

tableA(type)values('其它')--20本是'其它'

else

insert

into

tableA(type)values('杂志')--20本是'杂志'

set

@a=@a+1

end

go

--向表tableB循环插入测试语句

declare

@b

int

set

@b=0

while

(@b<120)

begin

insert

into

tableB(type)values('书籍')--全部是'书籍'

set

@b=@b+1

end

go

--查看表tableA,tableB中的数据

select

*

from

tableA

select

*

from

tableB

/************************查看你要看的的数据************************/

--方法一,用

charindex

函数(当然函数里面的顺序可以根据自己要求改变)

select

top

100

*

from

tableA

order

by

charindex(type,'书籍报刊漫画杂志光盘其它')

--方法二,如果在不想用函数可以同一楼一样用下面的方法

select

top

100

*

from

tableA

order

by

case

when

type='书籍'

then

1

when

type='报刊'

then

2

else

3

end

--tableB表同上

--查看完后删除测试表

drop

table

tableA

drop

table

tableB

数据我已经测试过了,没问题

最后求赏~~


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10649614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存