偶爾會出現僅使用標準 SQL SELECT 陳述式擷取前 N 個正整數的要求。然而,在沒有預先填充計數表的情況下確定此類請求的可行性至關重要。
標準 SQL 方法
在標準 SQL 領域,直接擷取沒有計數表的連續正整數係列是無法實現的。
MySQL 特定解決方案
MySQL 缺乏產生序號的本機函數,但它允許建立虛擬行集來規避此限制。考慮以下來自各種資料庫管理系統的範例:
SELECT level FROM dual CONNECT BY level <= 10
WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
SELECT num FROM generate_series(1, 10) num
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
$$
CALL prc_filler(10);
SELECT * FROM filler;
以上是如何僅使用 SQL SELECT 語句檢索前 N 個正整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!