Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL SELECT untuk mendapatkan N bilangan bulat positif pertama

Tampaknya yang Anda inginkan adalah dummy rowset .

Di MySQL , tidak mungkin tanpa meja.

Sebagian besar sistem utama menyediakan cara untuk melakukannya:

  • Di Oracle :

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

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

    SELECT  num
    FROM    generate_series(1, 10) num
    

MySQL kekurangan sesuatu seperti ini dan ini adalah kelemahan serius.

Saya menulis skrip sederhana untuk menghasilkan data pengujian untuk tabel sampel di posting blog saya, mungkin akan berguna:

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

Anda memanggil prosedur dan tabel akan diisi dengan angka.

Anda dapat menggunakannya kembali selama sesi berlangsung.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa memperbaiki Kesalahan Pemuatan MySQL

  2. Bagaimana cara menggunakan DATETIME sebagai DATE di mysql?

  3. Dalam kueri MySQL, mengapa menggunakan join alih-alih di mana?

  4. Hubungkan Metabase dengan MySQL untuk Eksplorasi Data

  5. Pentingnya panjang varchar di tabel MySQL