假设数据库名 tab
字段 id(标识列),bh
要求生成如下记录,假设50条:
id  bh
... 0051
... 0052
... 0053
.
.
.
... 0100请问,如果在记录数比较大(10000以上)的时候应使用什么样的语句效率会比较高,能否不适用循环。

解决方案 »

  1.   

    SELECT RIGHT('00000'+RTRIM(ID),5)
    FROM (
    SELECT TOP 10000 ID=ROW_NUMBER() OVER (ORDER BY GETDATE()) FROM syscolumns AS A,syscolumns AS B
    ) T
      

  2.   

    declare @i int
    set @i=0
    while @i<=50
    begin
    set nocount on
    declare @tb table (id int, id1 int identity(50,1) ,bh  as right( '00'+cast(id1 as varchar(10)),4)   )
    insert into @tb (id) select 10
    set @i=@i+1
    set nocount off
    end
    select id,bh from @tb
    id          bh
    ----------- --------
    10          0050
    10          0051
    10          0052
    10          0053
    10          0054
    10          0055
    10          0056
    10          0057
    10          0058
    10          0059
    10          0060
    10          0061
    10          0062
    10          0063
    10          0064
    10          0065
    10          0066
    10          0067
    10          0068
    10          0069
    10          0070
    10          0071
    10          0072
    10          0073
    10          0074
    10          0075
    10          0076
    10          0077
    10          0078
    10          0079
    10          0080
    10          0081
    10          0082
    10          0083
    10          0084
    10          0085
    10          0086
    10          0087
    10          0088
    10          0089
    10          0090
    10          0091
    10          0092
    10          0093
    10          0094
    10          0095
    10          0096
    10          0097
    10          0098
    10          0099
    10          0100(51 行受影响)
      

  3.   

    哎呀,忘记说明了,
    1、ID由系统自动生成,和bh没有任何对应关系;
    2、bh的规则就是,从指定起始编号开始,如题为0051,每条记录依次加1;
    3、起始编号可能每次不一样,不考虑bh重复。