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:
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
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!