Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL SELECT, um die ersten N positiven ganzen Zahlen zu erhalten

Anscheinend wollen Sie ein dummy rowset .

In MySQL , ohne einen Tisch geht es nicht.

Die meisten großen Systeme bieten eine Möglichkeit, dies zu tun:

  • In Oracle :

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

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

    SELECT  num
    FROM    generate_series(1, 10) num
    

MySQL fehlt so etwas und das ist ein schwerwiegender Nachteil.

Ich habe ein einfaches Skript geschrieben, um Testdaten für die Beispieltabellen in meinen Blogbeiträgen zu generieren, vielleicht ist es von Nutzen:

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
$$

Sie rufen die Prozedur auf und die Tabelle wird mit den Zahlen gefüllt.

Sie können es während der Sitzungsdauer wiederverwenden.