Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL SELECT để lấy N số nguyên dương đầu tiên

Có vẻ như những gì bạn muốn là một dummy rowset .

Trong MySQL , không thể không có bảng.

Hầu hết các hệ thống chính cung cấp một cách để làm điều đó:

  • Trong Oracle :

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

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

    SELECT  num
    FROM    generate_series(1, 10) num
    

MySQL thiếu một cái gì đó như thế này và đây là một nhược điểm nghiêm trọng.

Tôi đã viết một tập lệnh đơn giản để tạo dữ liệu thử nghiệm cho các bảng mẫu trong các bài đăng trên blog của mình, có thể nó sẽ được sử dụng:

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

Bạn gọi thủ tục và bảng có đầy các số.

Bạn có thể sử dụng lại nó trong suốt thời gian của phiên.



  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 để chọn bản ghi theo tháng ngay cả khi dữ liệu không tồn tại

  2. Bảng SQL với mục nhập danh sách so với bảng SQL với một hàng cho mỗi mục nhập

  3. PHP - Sử dụng PDO với mảng mệnh đề IN

  4. kết quả kép trong mảng của tôi (mysql_fetch_array)

  5. Bảng gian lận định dạng ngày MySQL