Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggunakan CTE sebagai loop blok?

Secara umum Anda tidak bisa.

Ini hanya berlaku untuk pernyataan berikutnya. Anda dapat menentukan tampilan dengan definisi yang sama jika Anda ingin menggunakan kembali definisi untuk beberapa pernyataan atau mewujudkannya sendiri ke dalam tabel/variabel tabel sementara untuk menggunakan kembali hasil .

Untuk kasus spesifik dalam pertanyaan Anda, Anda dapat melakukan semuanya dalam satu pernyataan.

WITH cte
     AS (SELECT 1 AS n
         UNION ALL
         SELECT n + 1
         FROM   cte
         WHERE  n + 1 <= 10)
INSERT INTO tbl1
            (id)
OUTPUT      INSERTED.id
INTO tbl2(id)
SELECT n
FROM   cte 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membatasi rekursi ke level tertentu - Baris duplikat

  2. Bagaimana cara memperbarui n baris dalam sebuah tabel?

  3. Cara Mengeksekusi SQL Query tanpa Menampilkan hasil

  4. Mendapatkan semua anak dari orang tua menggunakan kueri MSSQL

  5. Matriks Versi yang Didukung SQL Server