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

SQL LOOP INSERT na podstawie listy identyfikatorów

O to właśnie prosisz.

declare @IDList table (ID int)

insert into @IDList
SELECT id
FROM table1
WHERE idType = 1

declare @i int
select @i = min(ID) from @IDList
while @i is not null
begin
  INSERT INTO table2(col1,col2,col3) 
  SELECT col1, col2, col3
  FROM table1
  WHERE col1 = @i AND idType = 1

  select @i = min(ID) from @IDList where ID > @i
end

Ale jeśli to wszystko, co zamierzasz zrobić w pętli, powinieneś zamiast tego użyć odpowiedzi od Barry'ego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. połącz dwie identyczne struktury tabel z różnymi danymi

  2. Znajdź nazwy parametrów procedury składowanej

  3. Suma podzapytań w SQL Server

  4. Nie można połączyć się z lokalnym serwerem SQL z uwierzytelnianiem Windows za pomocą SSMS

  5. Przenieś pliki bazy danych SQL Server 2008 do nowej lokalizacji folderu