【问题标题】:How to add a row number to new table in SQL?如何在 SQL 中向新表中添加行号?
【发布时间】:2012-10-24 20:40:25
【问题描述】:

我正在尝试使用已在使用的现有表创建新表:

INSERT INTO NewTable (...,...)
   SELECT * from SampleTable

我需要的是在开头或结尾添加一个记录号,只要它在那里就没有关系。

示例表

Elizabeth  RI 02914
Emily      MA 01834

潜在的新表

1 Elizabeth  RI 02914
2 Emily      MA 01834

这可能吗?

这就是我最终的目标......除了现在这些表的大小不同,因为我需要我的 ErrorTemporaryTable 有一个列,其中第一行的数字会增加前一个减一。

declare @counter int
declare @ClientMessage varchar(255)
declare @TestingMessage carchar(255)
select @counter = (select count(*) + 1 as counter from ErrorValidationTesting)
while @counter <= (select count(*) from ErrorValidationTable ET, ErrorValidationMessage EM where ET.Error = EM.Error_ID)
begin
    insert into ErrorValidationTesting (Validation_Error_ID, Program_ID, Displayed_ID, Client_Message, Testing_Message, Create_Date)
    select * from ErrorTemporaryTable

    select @counter = @counter + 1

end

【问题讨论】:

    标签: sql-server-2005 insert-into


    【解决方案1】:

    您可以将into 子句与IDENTITY 列一起使用:

    SELECT IDENTITY(int, 1,1) AS ID_Num, col0, col1
    INTO NewTable
    FROM OldTable;
    

    Here 更多信息

    您也可以使用identity 字段创建表:

    create table NewTable
    (
      id int IDENTITY,
      col0 varchar(30),
      col1 varchar(30)
    )
    

    并插入:

    insert into NewTable (col0, col1)
    SELECT col0, col1   
    FROM OldTable;
    

    或者,如果您有 NewTable 并且想要添加新列,请参阅 SO 上的 this 解决方案。

    【讨论】:

    • select into 创建一个新表。如果表已经存在,那么它可能是一个问题。
    • 是的,我知道,但我添加了一个解决方案,如何正确创建表。
    【解决方案2】:
    INSERT INTO NewTable (...,...)
    SELECT ROW_NUMBER() OVER (ORDER BY order_column), * from SampleTable
    

    【讨论】:

      【解决方案3】:

      如果你在 SQL Server 中

      INSERT INTO newTable (idCol, c1,c2,...cn)
      SELECT ROW_NUMBER() OVER(ORDER BY c1), c1,c2,...cn
      FROM oldTable
      

      【讨论】:

        【解决方案4】:

        试试这个查询插入 1,2,3... 用你的列名替换 MyTable 和 ID。

        DECLARE @myVar int
        SET @myVar = 0
        UPDATE
          MyTable
        SET
           ID =  @myvar ,
           @myvar = @myVar + 1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-15
          • 1970-01-01
          • 2017-10-02
          • 2020-05-12
          • 2018-10-05
          • 2019-10-31
          • 2021-08-30
          • 2016-07-23
          相关资源
          最近更新 更多