【问题标题】:Sequence generator as column in a select statement in SQL序列生成器作为 SQL 中选择语句中的列
【发布时间】:2015-06-26 06:15:19
【问题描述】:

我正在尝试在另一个表中执行选择语句或插入语句,在该表中我将序列添加到第一列。

请看下面:

create table test (
nm      varchar(20),
age         decimal(38,12));

insert into test values ('Albert',20),('Ben',10),('Charles',30)

我正在尝试运行查询:

select 
##some kind of sequence function## as seq,
nm,
age
from test

我回来了:

seq nm age
1 Albert 20
2 Ben 10
3 Charles 30

另外,我希望能够将起始数字设置为序列,所以我可以将其设置为 50,序列将显示 51、52、53 等。

谢谢

【问题讨论】:

  • 如果你使用的是Oracle SQL,有一个序列号对象允许简单的序列号生成。

标签: sql sequence


【解决方案1】:
    select 50+row_number() over (order by nm) as rnum,
    nm,age from test

【讨论】:

    【解决方案2】:

    您可以使用 IDENTITY:

    CREATE TABLE test
    (
      id INT IDENTITY (50,1),
      nm VARCHAR(20) ,
      age DECIMAL(38, 12)
    );
    
    INSERT  INTO test
    VALUES  ( 'Albert', 20 ),
            ( 'Ben', 10 ),
            ( 'Charles', 30 )
    

    这会给你:

    id   nm       age
    ---------------------------
    50   Albert   20.000000000000
    51   Ben      10.000000000000
    52   Charles  30.000000000000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 2012-08-19
      相关资源
      最近更新 更多