Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Integer Positif N Pertama Hanya Menggunakan Pernyataan SELECT SQL?

Bagaimanakah Saya Boleh Mendapatkan Integer Positif N Pertama Hanya Menggunakan Pernyataan SELECT SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-19 11:38:09606semak imbas

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

Mendapatkan Nombor Bulat Positif N Pertama Menggunakan SQL SELECT

Keperluan untuk mengekstrak integer positif N pertama menggunakan semata-mata pernyataan SQL SELECT standard timbul sekali-sekala. Walau bagaimanapun, memastikan kebolehlaksanaan permintaan sedemikian tanpa jadual kiraan pra-diisi adalah penting.

Pendekatan SQL Standard

Dalam bidang SQL standard, mendapatkan semula secara langsung siri jujukan integer positif tanpa jadual kiraan ialah tidak boleh dicapai.

Penyelesaian Khusus MySQL

MySQL tidak mempunyai fungsi asli untuk menjana nombor berjujukan, tetapi ia membenarkan penciptaan set baris tiruan untuk memintas pengehadan ini. Pertimbangkan contoh berikut daripada pelbagai sistem pengurusan pangkalan data:

  • Oracle:
SELECT  level
FROM    dual
CONNECT BY
        level <= 10
  • SQL Pelayan:
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

Batasan MySQL

Malangnya, MySQL tidak menyediakan fungsi yang setanding, yang boleh dilihat sebagai kelemahan. Penyelesaian boleh dilakukan dengan menggunakan prosedur yang ditentukan pengguna untuk mengisi jadual sementara dengan bilangan baris yang dikehendaki, memudahkan pengambilan berikutnya. Contohnya:

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;

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Integer Positif N Pertama Hanya Menggunakan Pernyataan SELECT SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn