Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Pertanyaan Dinamik dalam MySQL?

Bagaimana untuk Melaksanakan Pertanyaan Dinamik dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-29 22:06:11540semak imbas

How to Execute Dynamic Queries in MySQL?

Melaksanakan Pertanyaan Dinamik dalam MySQL

Melaksanakan pertanyaan dinamik, di mana pernyataan SQL itu sendiri dibina pada masa jalan, biasanya dilakukan dalam MSSQL menggunakan prosedur tersimpan EXEC. Walau bagaimanapun, MySQL tidak mempunyai persamaan langsung.

Mengatasi Cabaran

Untuk melaksanakan pertanyaan dinamik dalam MySQL, satu pendekatan ialah membina rentetan pertanyaan sebagai pembolehubah dan kemudian menggunakan penyata PREPARE dan EXECUTE.

Pelaksanaan

Kod berikut menunjukkan cara untuk melaksanakan dinamik pertanyaan dalam MySQL:

SET @queryString = (
SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM (
    SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM ( 
           SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9 
    ) as qwe 
) as www
);

PREPARE stmt FROM @queryString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 
SET @asd = NULL;
  1. Bina rentetan pertanyaan sebagai pembolehubah (@queryString) menggunakan penggabungan rentetan dinamik dan subquery.
  2. Sediakan pernyataan menggunakan pernyataan PREPARE dengan yang dibina rentetan pertanyaan sebagai input.
  3. Laksanakan pernyataan yang disediakan menggunakan EXECUTE pernyataan.
  4. Alokasikan pernyataan yang disediakan menggunakan pernyataan DEALLOCATE PREPARE.

Dengan mengikuti pendekatan ini, MySQL boleh melaksanakan pertanyaan dinamik walaupun pertanyaan itu sendiri tidak diketahui terlebih dahulu.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan Dinamik dalam MySQL?. 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