Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Pembolehubah dalam Klausa MySQL LIMIT?
Menggunakan Pembolehubah dalam Klausa MySQL LIMIT
Dalam MySQL, cabaran biasa timbul apabila cuba menggunakan pembolehubah dalam klausa LIMIT dalam pernyataan SELECT. Walaupun fungsi sedemikian kelihatan mudah, ia tidak disokong secara asli.
Masalah:
Apabila cuba untuk memasukkan parameter input, seperti my_size (jenis: INTEGER), ke dalam klausa LIMIT, ralat berikut ialah ditemui:
SELECT * FROM some_table LIMIT my_size;
Error: You cannot use variables in LIMIT clauses.
Penyelesaian:
Malangnya, tiada cara langsung untuk mengatasi had ini dalam versi MySQL sebelum 5.5.6. Walau bagaimanapun, wujud penyelesaian yang melibatkan penggunaan jadual sementara dan prosedur tersimpan.
Penyelesaian:
Untuk menggunakan pembolehubah dalam klausa LIMIT dalam MySQL 5.5.6 dan ke atas, gunakan langkah berikut:
Untuk contoh:
SET @my_size = 10; CREATE TEMPORARY TABLE tmp_table AS SELECT * FROM some_table; INSERT INTO tmp_table (SELECT * FROM some_table); SELECT * FROM tmp_table LIMIT @my_size; DROP TEMPORARY TABLE tmp_table;
Pendekatan Alternatif:
Dalam versi MySQL sebelum 5.5.6, pendekatan alternatif tersedia, yang melibatkan penggunaan subpilihan dengan ROWNUM:
SET @limit = 10; SELECT * FROM ( SELECT instances.*, @rownum := @rownum + 1 AS rank FROM instances, (SELECT @rownum := 0) r ) d WHERE rank < @limit;
Nota: Pendekatan ini boleh mengakibatkan penalti prestasi berbanding kepada penyelesaian yang disebutkan di atas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pembolehubah dalam Klausa MySQL LIMIT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!