sql >> Databáze >  >> RDS >> Sqlserver

Použití CTE jako blokové smyčky?

Obecně nemůžete.

Platí pouze pro další výpis. Pokud chcete definici znovu použít, můžete definovat pohled se stejnou definicí pro více příkazů nebo je sami zhmotněte do dočasné tabulky/proměnné tabulky a znovu použijte výsledky .

Pro konkrétní případ ve vaší otázce byste to však mohli udělat vše v jednom příkazu.

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. Jak nainstalovat více serverů PostgreSQL na RedHat Linux

  2. Jak pracovat s dědičností v Entity Framework Core

  3. Mazání souvisejících řádků ve vztahu Many-to-Many

  4. mysql:najít řádky s opakovanými hodnotami plus podmínkou