Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL JOIN с LIMIT 1 върху обединена маса

  2. DATE_FORMAT() Примери – MySQL

  3. Производителност на пакетно вмъкване на JDBC

  4. Инсталирайте MySQL Workbench за администриране на бази данни

  5. Как да инсталирате MySQL на Debian 8