Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak mogę zwiększyć wartość dla każdej iteracji INSERT INTO?

użyj row_number funkcja nadania rzędom kolejnych numerów

insert into Table1 (column1,column2)
select 
    (select max(column1) from Table1) + row_number() over (order by T2.anotherColumn),
    T2.anotherColumn
from Table2 as T2

lub bezpieczniejsza wersja (działałaby nawet wtedy, gdy nie masz żadnych wierszy w tabeli 1):

insert into Table1 (column1,column2)
select 
    isnull(T1.m, 0) + row_number() over (order by T2.anotherColumn),
    T2.anotherColumn
from Table2 as T2
    outer apply (select max(column) as m from Table1) as T1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czym są nazwane rury?

  2. Jak utworzyć klucz obcy w SQL Server?

  3. Jak mogę zapobiec wzrostowi logów w SQL Server po wstawieniu milionów rekordów?

  4. Ponowne użycie pola z aliasem w instrukcji SQL SELECT

  5. Znaki akcentowane nie są poprawnie importowane za pomocą funkcji BULK INSERT