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

SQL SELECTを使用して、最初のN個の正の整数を取得します

    必要なのはdummy rowsetのようです 。

    MySQLで 、テーブルがなければ不可能です。

    ほとんどの主要なシステムはそれを行う方法を提供します:

    • Oracle内 :

      SELECT  level
      FROM    dual
      CONNECT BY
              level <= 10
      
    • SQL Server内 :

      WITH    q AS
              (
              SELECT  1 AS num
              UNION ALL
              SELECT  num + 1
              FROM    q
              WHERE   num < 10
              )
      SELECT  *
      FROM    q
      
    • PostgreSQLで :

      SELECT  num
      FROM    generate_series(1, 10) num
      

    MySQL このようなものが欠けており、これは重大な欠点です。

    ブログ投稿のサンプルテーブルのテストデータを生成するための簡単なスクリプトを作成しました。おそらくそれが役立つでしょう:

    CREATE TABLE filler (
            id INT NOT NULL PRIMARY KEY AUTO_INCREMENT
    ) ENGINE=Memory;
    
    CREATE PROCEDURE prc_filler(cnt INT)
    BEGIN
            DECLARE _cnt INT;
            SET _cnt = 1;
            WHILE _cnt <= cnt DO
                    INSERT
                    INTO    filler
                    SELECT  _cnt;
                    SET _cnt = _cnt + 1;
            END WHILE;
    END
    $$
    

    プロシージャを呼び出すと、テーブルに番号が入力されます。

    セッション中は再利用できます。



    1. MySQLとMariaDBのディザスタリカバリ計画

    2. IRIWorkbenchでTeradataに接続する

    3. 0〜60:間接チェックポイントへの切り替え

    4. COALESCEを使用してPostgreSQLでNULL値を処理する