首頁 >資料庫 >mysql教程 >如何僅使用 SQL SELECT 語句檢索前 N 個正整數?

如何僅使用 SQL SELECT 語句檢索前 N 個正整數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-19 11:38:09607瀏覽

How Can I Retrieve the First N Positive Integers Using Only a SQL SELECT Statement?

使用 SQL SELECT 擷取前 N 個正整數

偶爾會出現僅使用標準 SQL SELECT 陳述式擷取前 N 個正整數的要求。然而,在沒有預先填充計數表的情況下確定此類請求的可行性至關重要。

標準 SQL 方法

在標準 SQL 領域,直接擷取沒有計數表的連續正整數係列是無法實現的。

MySQL 特定解決方案

MySQL 缺乏產生序號的本機函數,但它允許建立虛擬行集來規避此限制。考慮以下來自各種資料庫管理系統的範例:

  • Oracle:
SELECT  level
FROM    dual
CONNECT BY
        level <= 10
  • SS QL伺服器:
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
$$

CALL prc_filler(10);
SELECT  * FROM filler;

以上是如何僅使用 SQL SELECT 語句檢索前 N 個正整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn