sql >> Database >  >> RDS >> Sqlserver

CTE gebruiken als bloklus?

Over het algemeen kun je dat niet.

Het is alleen geldig voor de volgende verklaring. U kunt een weergave met dezelfde definitie definiëren als u de definitie opnieuw wilt gebruiken voor meerdere statements of maak het zelf in een tijdelijke tabel/tabelvariabele om de resultaten opnieuw te gebruiken .

Voor het specifieke geval in uw vraag zou u het echter allemaal in één verklaring kunnen doen.

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. Hoe stel ik de tijdzone in voor Postgres psql?

  2. PHP Fatale fout:oproep naar niet-gedefinieerde functie mssql_query()

  3. Omgaan met ongelezen berichten in PHP / MySQL

  4. Gebruik een LIKE-instructie op SQL Server XML-gegevenstype