Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL SELECT, aby uzyskać pierwsze N ​​dodatnich liczb całkowitych

Wygląda na to, że to, czego potrzebujesz, to dummy rowset .

W MySQL , to niemożliwe bez stołu.

Większość głównych systemów zapewnia na to sposób:

  • W Oracle :

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

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

    SELECT  num
    FROM    generate_series(1, 10) num
    

MySQL brakuje czegoś takiego i jest to poważna wada.

Napisałem prosty skrypt do generowania danych testowych dla przykładowych tabel w moich postach na blogu, może się przyda:

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

Wywołujesz procedurę, a tabela zapełnia się liczbami.

Możesz użyć go ponownie w trakcie trwania sesji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy MySQL FIND_IN_SET lub odpowiednik może używać indeksów?

  2. Django :Tabela nie istnieje

  3. Jak obsługiwać wyjątki PDO

  4. MySQL:ALTER TABLE, jeśli kolumna nie istnieje

  5. Jak napisać procedurę składowaną za pomocą phpmyadmina i jak z niej korzystać za pośrednictwem php?