sql >> データベース >  >> RDS >> Sqlserver

CTE をブロック ループとして使用しますか?

    一般的にはできません。

    次のステートメントに対してのみ有効です。 定義を再利用したい場合は、同じ定義でビューを定義できます 結果を再利用するために、複数のステートメントの場合、または自分で一時テーブル/テーブル変数に実体化します .

    ただし、質問の特定のケースについては、1 つのステートメントですべてを実行できます。

    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. MySQLは、合計がしきい値を超えるレコードを選択します

    2. JDBCで使用するSQLクエリのWHERE条件で同じパラメータを複数回使用する

    3. mysqlでイベントスケジューラのステータスを変更する

    4. MySQLデータベースをメモリ内で完全に実行するにはどうすればよいですか?