Bolehkah Nama Lajur Disatukan Secara Dinamik untuk Perlaksanaan Pertanyaan MySQL?

Linda Hamilton
Lepaskan: 2024-10-24 04:43:30
asal
957 orang telah melayarinya

Can Column Names Be Concatenated Dynamically for MySQL Query Execution?

Menggabungkan Nama Lajur Secara Dinamik untuk Pelaksanaan Pertanyaan dalam MySQL

Pernyataan Masalah:

Dalam MySQL , adalah diingini untuk menggabungkan nama lajur dalam pertanyaan di mana bahagian pertama nama lajur ialah rentetan dan bahagian kedua ialah nombor yang diambil daripada pertanyaan lain.

Percubaan Penyelesaian:

Pernyataan SQL berikut cuba mencapai penggabungan:

<code class="sql">SELECT CONCAT('column', mytable.mycolumn) FROM table ...</code>
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini tidak memberikan hasil yang diingini dan penggabungan nampaknya tidak berkesan.

Penyelesaian :

Bertentangan dengan kepercayaan terdahulu, sememangnya mungkin untuk membina nama lajur dalam MySQL secara dinamik menggunakan penyataan yang disediakan di sebelah pelayan. Pertimbangkan pendekatan berikut:

<code class="sql">set @query := (
  select concat(
    "select",
      group_concat(concat("\n  1 as ", column_name) separator ','),
    "\nfrom dual")
  from information_schema.columns
  where table_name = 'columns')
;

prepare s1 from @query
;
execute s1
;
deallocate prepare s1
;</code>
Salin selepas log masuk

Kod ini membina rentetan pertanyaan secara dinamik berdasarkan kandungan jadual lajur. Kenyataan prepare kemudiannya digunakan untuk menyusun rentetan pertanyaan, yang kemudiannya boleh dilaksanakan menggunakan pernyataan laksana.

Atas ialah kandungan terperinci Bolehkah Nama Lajur Disatukan Secara Dinamik untuk Perlaksanaan Pertanyaan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!