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

MySQLで数値の範囲を生成する

    これは、ループなしでセットベースで実行する1つの方法です。これは、再利用のためのビューにすることもできます。この例は、0から999までのシーケンスの生成を示していますが、もちろん、それに合わせて変更することもできます。

    INSERT INTO
        myTable
        (
        nr
        )
    SELECT
        SEQ.SeqValue
    FROM
    (
    SELECT
        (HUNDREDS.SeqValue + TENS.SeqValue + ONES.SeqValue) SeqValue
    FROM
        (
        SELECT 0  SeqValue
        UNION ALL
        SELECT 1 SeqValue
        UNION ALL
        SELECT 2 SeqValue
        UNION ALL
        SELECT 3 SeqValue
        UNION ALL
        SELECT 4 SeqValue
        UNION ALL
        SELECT 5 SeqValue
        UNION ALL
        SELECT 6 SeqValue
        UNION ALL
        SELECT 7 SeqValue
        UNION ALL
        SELECT 8 SeqValue
        UNION ALL
        SELECT 9 SeqValue
        ) ONES
    CROSS JOIN
        (
        SELECT 0 SeqValue
        UNION ALL
        SELECT 10 SeqValue
        UNION ALL
        SELECT 20 SeqValue
        UNION ALL
        SELECT 30 SeqValue
        UNION ALL
        SELECT 40 SeqValue
        UNION ALL
        SELECT 50 SeqValue
        UNION ALL
        SELECT 60 SeqValue
        UNION ALL
        SELECT 70 SeqValue
        UNION ALL
        SELECT 80 SeqValue
        UNION ALL
        SELECT 90 SeqValue
        ) TENS
    CROSS JOIN
        (
        SELECT 0 SeqValue
        UNION ALL
        SELECT 100 SeqValue
        UNION ALL
        SELECT 200 SeqValue
        UNION ALL
        SELECT 300 SeqValue
        UNION ALL
        SELECT 400 SeqValue
        UNION ALL
        SELECT 500 SeqValue
        UNION ALL
        SELECT 600 SeqValue
        UNION ALL
        SELECT 700 SeqValue
        UNION ALL
        SELECT 800 SeqValue
        UNION ALL
        SELECT 900 SeqValue
        ) HUNDREDS
    ) SEQ
    


    1. SQLServerで「datediff関数がオーバーフローを引き起こしました」エラーを修正する方法

    2. PostgreSQLでのAbs()のしくみ

    3. 各行の列値に基づいて行を複製する

    4. OracleEBSパスワードの有効期限/ポリシー/設定に関する便利なクエリ