Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menjana Integer Positif N Pertama dengan Pernyataan SELECT SQL?

Bagaimanakah Saya Boleh Menjana Integer Positif N Pertama dengan Pernyataan SELECT SQL?

DDD
DDDasal
2024-12-24 14:35:15311semak imbas

How Can I Generate the First N Positive Integers with a SQL SELECT Statement?

Menjana N Integer Positif Pertama Menggunakan SQL SELECT

Masalah:

Mendapatkan yang pertama N integer positif yang hanya menggunakan pernyataan SQL SELECT standard telah menimbulkan cabaran. Adakah terdapat penyelesaian tanpa bergantung pada jadual kiraan?

Jawapan:

Walaupun SQL umum tidak mempunyai kaedah asli untuk operasi ini, beberapa sistem pangkalan data utama menawarkan penyelesaian:

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

MySQL:

Tidak seperti sistem yang disebutkan di atas, MySQL tidak mempunyai mekanisme yang sama. Sebagai penyelesaian, anda boleh menggunakan skrip berikut untuk mencipta jadual sementara dan mengisinya dengan nombor yang dikehendaki:

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

Untuk menggunakan skrip, panggil prosedur dengan nombor integer yang dikehendaki:

CALL prc_filler(10);

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Integer Positif N Pertama dengan 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